1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/kymjs-KJPush

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

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.

#Использование в проекте

Если вам нужна более совершенная схема использования, обратите внимание на KJBlog.

  1. Добавьте android:name="org.kymjs.push.core.KJPushManager" в тег в AndroidManifest.
  2. Если у вас уже есть собственный класс Application, вы можете выбрать наследование своего класса Application от KJPushManager.

Добавьте следующее объявление в файл 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 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/kymjs-KJPush.git
git@api.gitlife.ru:oschina-mirror/kymjs-KJPush.git
oschina-mirror
kymjs-KJPush
kymjs-KJPush
master