无法在 Parse 应用程序中接收推送通知

3
我在我的应用中配置了Parse API,除了推送通知外,一切正常。 我尝试从网站发送它们,但它们没有到达应用程序。 我按文档中所写的做了一切,但我无法接收通知推送。文档,但我无法接收通知推送。
我能够收到其中一条消息,但是当我按下时应用程序崩溃了。 现在我尝试更改一些内容,但即使我恢复原状,我也无法再次接收它们。 我如何解决我的问题?
编辑:由于某些用户可能会感兴趣,这是我用于推送通知的代码部分:
主要类(不是MainActivity):
    public class InstantsApplication extends Application {
public void onCreate() {
    super.onCreate();
    // Hidden
    Parse.initialize(this, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 
    "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");



    ParseInstallation.getCurrentInstallation().saveInBackground();

    ParsePush.subscribeInBackground("", new SaveCallback() {
        @Override
        public void done(ParseException e) {
            if (e == null) {
                Log.d("com.parse.push", "successfully subscribed to the broadcast channel.");

            } else {
                Log.e("com.parse.push", "failed to subscribe for push", e);
            }
        }
     }
}

AndroidManifest(不包含权限,相信我我已经放置了它们):

<!-- PARSE -->
<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.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" />

        <!--
          IMPORTANT: Change "com.parse.tutorials.pushnotifications" to match your app's package name.
        -->
        <!-- I have hidden package name root for this question -->
        <category android:name="com.xxxxxxxx.instants" />


    </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>
</application>
1个回答

4

我之前也遇到了这个问题,因为你使用了最新的Parse api。

你只需要进行一些简单的更改即可修复问题。

首先,要直接解决由于从Parse后端发出推送而导致的错误,你需要在你的清单文件中声明一个用于Parse推送的通知图标。

 <meta-data android:name="com.parse.push.notification_icon"
            android:resource="@drawable/ic_launcher"/>

在application标签关闭前使用。

现在从后台发出另一个推送,您将获得预期的推送通知。到目前为止还不错。但是,点击推送将再次导致应用程序崩溃。要解决此问题,您需要删除现在已弃用的调用PushService.setDefaultPushCallback(...)并添加自己的接收器类。我在*.util包中进行了如下操作:

public class Receiver extends ParsePushBroadcastReceiver {

    @Override
    public void onPushOpen(Context context, Intent intent) {
        Intent i = new Intent(context, MainActivity.class);
        i.putExtras(intent.getExtras());
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);
    }
}

接下来,将默认的 Parse 接收器更改为刚刚创建的接收器:- 进入您的 Manifest 文件。
 <receiver
            android:name="your.package.name.utils.Receiver"
            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>

虽然有帮助,但你告诉我所有我已经尝试并反转的事情。仍然无法接收推送通知(无论如何,我已经设置了图标,但在这里没有提到)。 - user1714647
你的日志里显示了什么?我真的尝试过,它会显示 D/com.parse.push:成功订阅广播频道。 - bjiang
@bjiang 我正在使用这段代码从一个安卓设备发送通知到另一个设备 http://pastie.org/10223872 但是我没有收到任何通知,我还创建了一个ParseReciver类继承BroadCastReciever。 - Erum
@Erum,你可以打开一个问题并在那里发布你的代码。 - bjiang
@bjiang,我被禁止提问了,你能来这里吗,这样我就可以分享一下代码中的问题了。http://chat.stackoverflow.com/rooms/78662/fancycoverflow http://chat.stackoverflow.com/rooms/50272/androidians - Erum
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接