Да, C2DM - это решение Android Push.На https://github.com/awysocki/C2DM-PhoneGap вы можете найти пример реализации.
Файлы в пространстве имен com.google должны быть включены без изменений, они из сеанса "Обзор сеанса Google IO: Android + App Engine:«Комбинация мечты разработчика» », см. http://bradabrams.com/2011/05/google-io-session-overview-android-app-engine-a-developers-dream-combination/
Итак, вы должны выполнить следующие шаги:
- Добавить 3 класса com.google в свой проект
- Создайте класс с именем
C2DMReceiver
(соглашение об именах), который наследуется от C2DMBaseReceiver
и реализуйте необходимые абстрактные события - Установите AndroidManifest.xml
AndroidManifest выглядит как
<!-- set up an own permission to secure our C2DM mesages -->
<permission android:name="your.namespace.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<!-- List of permission -->
<uses-permission android:name="your.namespace.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<application ..>
<!-- Your implementation of the class C2DMReceiver, base class is Googles C2DMBaseReceiver -->
<service android:name=".C2DMReceiver" />
<!-- Googles broadcast receiver, it delegates to your.namespace.C2DMReceiver -->
<receiver
android:name="com.google.android.c2dm.C2DMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="your.namespace" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="your.namespace" />
</intent-filter>
</receiver>
</application>
Если вы получаете на эмуляторе ошибку «Уведомления E / CSE (401): Ошибка регистрации ACCOUNT_MISSING», вам необходимо добавить учетную запись Google в ваш эмулятор.
Для второго вопроса: это зависит от того, что вы хотите сделать.Когда вы получаете сообщение и хотите просто отобразить уведомление, чтобы пользователь мог запустить ваше приложение, вам не нужен плагин Phonegap.В этом случае вы можете решить все в Java.