Уведомления о парсе на андроиде не будут работать

Я пытаюсь настроить оповещения обозревателя на Android в течение некоторого времени. Я следил за различными учебниками, и я пытаюсь отправить уведомления с их веб-платформы, но ничего не работает. Вот что я пробовал до сих пор.

Вот метод onCreate моего класса Application

@Override public void onCreate() { super.onCreate(); Log.i("PushNotifications","PARSE initialize"); Parse.initialize(this, "******************************", "*****************************"); ParseInstallation.getCurrentInstallation().saveInBackground(); ParsePush.subscribeInBackground("", new SaveCallback() { @Override public void done(ParseException e) { if (e == null) { Log.i("PushNotifications","com.parse.push" + " successfully subscribed to the broadcast channel."); } else { Log.i("PushNotifications","com.parse.push" + " failed to subscribe for push"); } } }); } 

Это называется успешно, поскольку я получаю журнал

Успешно подписался на широковещательный канал.

Также здесь приведено некоторое релевантное содержание моего файла манифеста:

 <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> <permission android:name="com.my.app.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.my.app.permission.C2D_MESSAGE" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-permission android:name="android.permission.SEND_SMS" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:name="android.hardware.camera" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:name=".App" android:theme="@style/AppTheme"> <activity android:name=".activities.MainActivity" android:launchMode="standard" android:screenOrientation="sensorPortrait"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <meta-data android:name="com.parse.push.gcm_sender_id" android:value="id:123456789" /> <meta-data android:name="com.parse.push.notification_icon" android:resource="@drawable/ic_launcher"/> <service android:name="com.parse.PushService" /> <receiver android:name="com.parse.ParseBroadcastReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.USER_PRESENT" /> </intent-filter> </receiver> <receiver android:name="com.parse.ParsePushBroadcastReceiver" android:exported="false"> <intent-filter> <action android:name="com.parse.push.intent.RECEIVE" /> <action android:name="com.parse.push.intent.DELETE" /> <action android:name="com.parse.push.intent.OPEN" /> </intent-filter> </receiver> <!--com.parse.GcmBroadcastReceiver"--> <receiver android:name="com.parse.GcmBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND"> <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <category android:name="com.my.app" /> </intent-filter> </receiver> </application> 

Когда я пытаюсь отправить push с сайта Parse, ничего не происходит.

Поскольку это не работает, я попытался реализовать свой собственный GcmBroadcastReceiver и изменить его в манифесте.

 <receiver android:name=".receivers.MyCustomReceiver" android:permission="com.google.android.c2dm.permission.SEND"> <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <category android:name="com.my.app" /> </intent-filter> </receiver> 

А также

 public class MyCustomReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.i("PushNotifications","MyCustomReceiver"); } } 

Безуспешно.

Затем я также попытался создать свой собственный ParsePushBroadcastReceiver (наследуя от ParsePushBroadcastReceiver).

 <receiver android:name=".receivers.CustomParseReceiver" android:exported="false"> <intent-filter> <action android:name="com.parse.push.intent.RECEIVE" /> <action android:name="com.parse.push.intent.DELETE" /> <action android:name="com.parse.push.intent.OPEN" /> </intent-filter> </receiver> 

А также

 public class CustomParseReceiver extends ParsePushBroadcastReceiver { @Override protected Notification getNotification(Context context, Intent intent) { Log.i("PushNotifications","PARSE getNotification"); return null; } @Override protected void onPushOpen(Context context, Intent intent) { Log.i("PushNotifications","PARSE onPushOpen"); } @Override protected void onPushReceive(Context context, Intent intent) { Log.i("PushNotifications","PARSE onPushReceive"); } private JSONObject getDataFromIntent(Intent intent) { Log.i("PushNotifications","PARSE getDataFromIntent"); } } 

Это тоже не сработало.

Дело в том, что .. когда я создаю свой собственный GCM BroadcastReceiver, и я отправляю уведомление с моего собственного сервера (с небольшим скриптом php), уведомление успешно получено.

Я действительно задаюсь вопросом, что случилось с моей реализацией системы уведомлений о синтаксическом анализе на стороне клиента.

Любой намек на то, где может возникнуть проблема?

Мои 2 цента на это (надеюсь, это поможет):

У меня была аналогичная проблема, которую я решил (пояснил здесь ), так что может быть проблема, если нет, взглянуть на мои файлы, быстро взглянув на них, похоже, имеет небольшую разницу с вашими, и они работают так, Стоит посмотреть:

Раздел манифеста:

  <!-- for parse pushes --> <service android:name="com.parse.PushService" /> <receiver android:name="com.parse.ParseBroadcastReceiver" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.USER_PRESENT" /> </intent-filter> </receiver> <receiver android:name="com.MyStuff.stuff.utils.MyPushReceiver" android:exported="false" > <intent-filter> <action android:name="com.parse.push.intent.RECEIVE" /> <action android:name="com.parse.push.intent.OPEN" /> <action android:name="com.parse.push.intent.DELETE" /> </intent-filter> </receiver> <receiver android:name="com.parse.GcmBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <category android:name="com.MyStuff.stuff" /> </intent-filter> </receiver> <meta-data android:name="com.parse.push.notification_icon" android:resource="@drawable/ic_launcher" /> 

Я реализовал свой собственный ParsePushBroadcastReceiver:

 public class MyPushReceiver extends ParsePushBroadcastReceiver { @Override protected void onPushOpen(Context context, Intent intent) { //bla bla... } @Override protected void onPushReceive(Context context, Intent intent) { // bla bla... } @Override protected Notification getNotification(Context context, Intent intent) { Notification notification = super.getNotification(context, intent); // do some stuff with it.. } } 

И мой класс приложения:

 public class MyApplication extends Application { private static final String CKey = "***********"; private static final String AId = "************"; @Override public void onCreate() { super.onCreate(); Parse.initialize(this, AId, CKey); //initialized some stuff.. ParsePush.subscribeInBackground("", new SaveCallback() { @Override public void done(ParseException e) { if (null == e) { ParseInstallation install = ParseInstallation.getCurrentInstallation(); String token = install.getString("deviceToken"); //do some stuff with it... } } }); ParseInstallation.getCurrentInstallation().saveInBackground(); //some more stuff } 

Надеюсь, он поставит вас на правильный путь!

First: включили ли вы настройки Push Notification из настроек проекта

Я столкнулся с той же проблемой, наконец, я удалил свой проект и создал новый в Parse, тогда проблема решена без каких-либо вещей !!!! Зачем ?? Я не знаю …

И не забывайте всегда получать новейший Parse SDK, теперь его Parse-1.9.2.jar