我正在使用Parse将通知推送到我的应用程序,但有趣的是即使发送通知(通过控制台确认),只有当我强制停止应用程序并重新启动应用程序时,设备才会收到通知! Parse pushReceiver服务是否进入休眠状态?
以下是我的清单和broadcastReceiver的片段,我有一个敬酒,告诉我什么时候收到推送!这仅在应用重启时发生。
清单:
<service android:name="com.parse.PushService" />
<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.aadisriram.buzzmessenger" />
</intent-filter>
</receiver>
<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.aadisriram.buzzmessenger.SilentBroadcastReceiver" >
<intent-filter>
<action android:name="channelpush" >
</action>
</intent-filter>
</receiver>
广播接收器
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
String message = extras != null ? extras.getString("com.parse.Data") : "";
JSONObject jObject;
try {
jObject = new JSONObject(message);
String channelName = jObject.getString("channel_name");
Toast toast = Toast.makeText(context, "Notif received", Toast.LENGTH_SHORT);
toast.show();
} catch (JSONException e) {
e.printStackTrace();
}
}
答案 0 :(得分:0)
好吧,所以我通过将我的Parse SDK从1.3更新到1.4来解决了这个问题!我无法理解的是,如果在某种程度上有什么东西在1.3上有效,它是怎么突然停止的?
奇怪的问题,但解决方案是升级到Parse SDK的v1.4。
答案 1 :(得分:0)
尝试这可能对你有所帮助,我已成功实施并且我的推动正在发挥作用..
<receiver android:name="com.parse.ParseBroadcastReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.RECEIVE_BOOT_COMPLETED" />
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
<receiver android:name="your package name.YourCustomReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.USER_PRESENT" />
<action android:name="your package name.UPDATE_STATUS" />
</intent-filter>
</receiver>