KJPush: введение
KJPush — это Android-фреймворк для push-уведомлений, цель которого — позволить разработчикам на Android выполнять разработку функций push-уведомлений без необходимости взаимодействия с серверными разработчиками.
В отличие от существующих сторонних сервисов push-уведомлений (таких как WeChat, QQ, Baidu и т. д.), которые используют сокеты для установления длительного соединения, KJPush использует механизм опроса, который лучше подходит для лёгких приложений и позволяет быстро разрабатывать функции push-уведомлений. Многие считают, что длительное соединение не требует никаких затрат, но это не так. При правильной настройке стратегии опроса потребление энергии и трафика данных будет не больше, чем при использовании одного сокета.
Добро пожаловать!
Область применения
Механизм опроса, используемый для реализации push-уведомлений, не подходит для функций чата, но хорошо подходит для разработки функций уведомлений приложений. Это связано с тем, что чат требует высокой эффективности, а механизм опроса жертвует эффективностью данных ради снижения энергопотребления. Из-за снижения частоты общения с сервером он больше подходит для уведомлений приложений, где требования к эффективности времени не столь высоки.
Сравнение с длительным соединением
Преимущество использования длительного соединения заключается в том, что данные передаются своевременно, но недостатком является то, что требуется соответствующая реализация как на клиенте, так и на сервере, и настройка также сложна. Преимущество механизма опроса заключается в простоте реализации, серверу не требуется никаких дополнительных изменений кода, а клиенту нужно всего лишь две строки кода. Независимо от того, используется ли длительное соединение или механизм опроса, существуют две проблемы: потребление энергии и использование трафика. В настоящее время KJPush в режиме GPRS запрашивает сервер каждые 4 минуты, а в режиме Wi-Fi — каждые 2 минуты.
Потребление энергии и использование трафика
Потребление энергии в основном происходит в двух местах: таймер должен работать постоянно, а сетевое взаимодействие потребляет много энергии. Для решения проблемы таймера в KJPush используется стратегия использования системного AlarmManager, который реагирует каждые 2 минуты, по сравнению с собственной реализацией таймера, такой как Sleep, TimerTask, которая обязательно потребует дополнительного системного потребления, что напрямую приводит к потреблению энергии мобильным телефоном и увеличивает вероятность того, что процесс будет восстановлен системой. Что касается обработки сетевого взаимодействия, по умолчанию установлено, что когда экран телефона выключен, запрос данных сети останавливается, и когда экран выключен более 20 секунд, процесс push полностью останавливается. Когда экран снова включается, процесс push возобновляется и инициируется запрос данных сети. Другими словами, когда экран выключен, KJPush вообще не потребляет энергию. Конечно, открытый интерфейс настройки позволяет свободно настраивать действия после включения и выключения экрана, а также интервал между срабатываниями AlarmManager.
#Использование в проекте
Добавьте следующее объявление в файл AndroidManifest вашего проекта:
<service
android:name="org.kymjs.push.core.PullService"
android:persistent="true"
android:process=":kymjs_pullservice" >
<intent-filter android:priority="1000" >
<action android:name="org.kymjs.push.service.pull_service" />
</intent-filter>
</service>
<receiver
android:name="org.kymjs.push.core.PushReceiver"
android:process=":kymjs_pullservice" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
Чтобы остановить push, вызовите:
PushManager.stopWork();
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )