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

Я пытаюсь настроить оповещения обозревателя на 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

Intereting Posts
Синхронизировать базу данных sqlite android Запустить приложение для Android без активности Зачем использовать FileProvider? Я не могу открыть файл из INTERNAL STORAGE с помощью внешних приложений? 'Не удалось найти ошибку стиля mapViewStyle'. Meta Viewport для браузера по умолчанию для Android Как отображать таймер в android Cordova + Android – android-windowSoftInputMode adjustPan не работает Зная, когда Firebase завершил вызов API? Поиск подстроки между определенными символами с неизвестным индексом Что на самом деле дает мне функция getMaxAmplitude () для MediaRecorder для Android? Приложение не станет предпочтительным MediaButtonReceiver при вызове setActive (true) второй раз Как получить MD5 из файла debug.keystore? Android: используйте базу данных SQLite на SD-карте (вообще не используя встроенный Android-хранилище данных) Приложение Admob Ads иногда приводит к сбою в IllegalArgumentException Правильное использование Sqlite на Android (SQLiteOpenHelper, подключения, основной поток и т. Д.)