仅在应用重启时收到解析推送通知

时间:2014-03-08 08:23:44

标签: android push-notification parse-platform

我正在使用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();
    }
}

2 个答案:

答案 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>