Любой, кто делает C2DM на Android

Мне нужно реализовать c2dm в моем приложении. Есть ли кто-нибудь, кто это делает? Пожалуйста, помогите. Некоторые учебные пособия будут очень полезны или если вы завершили реализацию c2dm, то учебник более чем оценен.

Пожалуйста, помогите.

Ответ 1

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

Загрузите его с: http://code.google.com/p/chrometophone/source/checkout

или svn it:

svn checkout http://chrometophone.googlecode.com/svn/trunk/ chrometophone-read-only

Основные вещи, которые вы должны понимать.

В классе C2DMBaseReciever у вас есть:

@Override
    public final void onHandleIntent(Intent intent) {
        try {
            Context context = getApplicationContext();
            if (intent.getAction().equals(REGISTRATION_CALLBACK_INTENT)) {
                handleRegistration(context, intent);
            } else if (intent.getAction().equals(C2DM_INTENT)) {
                onMessage(context, intent);
            } else if (intent.getAction().equals(C2DM_RETRY)) {
                C2DMessaging.register(context, senderId);
            }
        } finally {
            //  Release the power lock, so phone can get back to sleep.
            // The lock is reference counted by default, so multiple 
            // messages are ok.

            // If the onMessage() needs to spawn a thread or do something else,
            // it should use it own lock.
            mWakeLock.release();
        }
    }

Этот метод получает намерения от службы C2DM и обрабатывает их.

В методе handleRegistration вы увидите код, который выглядит так:

} else {
            try {
                onRegistrered(context, registrationId);
                C2DMessaging.setRegistrationId(context, registrationId);
                //Add some code here to send your server the registration ID for this phone.
            } catch (IOException ex) {
                Log.e(TAG, "Registration error " + ex.getMessage());
            }
        }

Затем вам необходимо использовать службу входа в систему google oAuth для регистрации вашего сервера в службе, как только это будет сделано, вы можете отправить сообщение. Когда я тестировал, я использовал curl для отправки HTTP-запросов на сервер.

Для регистрации с сервера:

curl https://www.google.com/accounts/ClientLogin -d Email=theEmailYouWhitelisted -d Passwd=pass****word -d accountType=HOSTED_OR_GOOGLE -d source=Google-cURL-Example -d service=ac2dm

Появится сообщение с идентификатором auth. Затем вы используете это для отправки сообщений. Чтобы отправить сообщение, используйте:

curl --header "Authorization: GoogleLogin auth=**authFromRegistrationAbove**" "https://android.apis.google.com/c2dm/send" -d registration_id=**phoneRegistrationId(reciever)** -d "data.message=StringToPass" -d collapse_key=something -k

Скачайте скручивание из: CURL

Надеюсь, что это поможет.

Ответ 2

учебник о регистрации/отправке/получении сообщений c2dm client/server.

http://android.arnodenhond.com/tutorials/cloud-to-device-messaging

  • намерение запросить идентификатор регистрации приемник
  • для получения идентификатора регистрации
  • URL-адрес для регистрации сервера
  • URL-адрес для отправки сообщения
  • широковещательный приемник для приема сообщения