Работник уведомлений в Couchbase Lite для GCM

Я внедряю Couchbase lite со своим приложением для Android и обнаружил, что лучший способ использовать синхронизацию Couchbase lite для вытягивания — это использовать GCM, а не непрерывное вытягивание. Я просматривал руководство здесь, а репозиторий того же приложения находится здесь.

Как упоминалось в файле readme репозитория, мне нужно использовать двоичный файл Notification worker из это репозиторий.

Я разобрался во всем, как это работает. А также успешно запустите пример приложения, используя мой собственный шлюз синхронизации. Но не могу понять, как заставить рабочий поток уведомлений работать для моего приложения.

Этот двоичный файл работника уведомлений взаимодействует со шлюзом синхронизации, как указано здесь: http://www.slideshare.net/droidconae/droidcon-dubai/32

Как я могу заставить его работать для моего приложения для Android? И какова фактическая роль, которую он играет в получении изменений, и как он решает, кому ему нужно отправить запрос на синхронизацию?

Любая ссылка или руководство было бы очень полезно.

Заранее спасибо.


person kirtan403    schedule 21.01.2016    source источник


Ответы (1)


Как я могу заставить его работать для моего приложения для Android?

Сначала вам нужно создать проект Google API в консоли разработчика и следовать руководству.

Затем измените файл Android.Manifest.xml из вашего проекта Android с необходимыми разрешениями, где он должен выглядеть следующим образом:

<manifest package="com.couchbase.todolite"> // ...

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

<permission android:name="com.couchbase.todolite.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<uses-permission android:name="com.couchbase.todolite.permission.C2D_MESSAGE" />

<application android:name="com.couchbase.todolite.Application"> // ...

    /* ... activities ... */

    <receiver
        android:name=".GcmBroadcastReceiver"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <category android:name="com.couchbase.todolite" />
        </intent-filter>
    </receiver>
    <service android:name=".GcmMessageHandler" />
</application>

Follow this guide in terms of setting up GCM within your app and long with the instructions to handle the Sync notification on the Android client side.

Ты упомянул:

И какова фактическая роль, которую он играет в получении изменений, и как он решает, кому ему нужно отправить запрос на синхронизацию?

GCM здесь используется для запуска выборки данных со стороны сервера. Запрос к серверам GCM предоставляется вместе с сообщением для отправки и адресом для отправки на стороне клиента приложения.

person sweetiewill    schedule 21.01.2016
comment
Я знаю это. Все это упоминается в учебнике, который я упомянул в вопросе. Как я могу обрабатывать изменения на шлюзе синхронизации с помощью GCM. Двоичный файл обработчика уведомлений в примере проекта проверяет наличие изменений на шлюзе синхронизации и отправляет сообщения на определенные клиентские устройства для запуска синхронизации. Как я могу добиться этого в шлюзе синхронизации с помощью собственного двоичного файла работника уведомлений, который обрабатывает то, что происходит в шлюзе синхронизации? - person kirtan403; 22.01.2016
comment
Пост был опубликован до релиза 1.1. Доступная с тех пор функция веб-перехватчика упрощает эту задачу (blog.couchbase.com/sync-gateway-webhooks< /а>). Я бы использовал это вместо того, чтобы слушать ленту изменений. Во-вторых, вы можете использовать что-то вроде node-gcm (github.com/ToothlessGear/node-gcm ), чтобы собрать сервер NodeJS (возможно, используя Express) для получения полезной нагрузки веб-перехватчика и отправки уведомления. - person jamiltz; 29.01.2016