Android - 解析推送通知在打开时崩溃

Posted

技术标签:

【中文标题】Android - 解析推送通知在打开时崩溃【英文标题】:Android - Parse push notification crashes on open 【发布时间】:2014-12-03 01:41:01 【问题描述】:

我已经设置了解析推送通知,当我尝试打开它时我的应用程序崩溃了,现在我找到了一个解决方法,我可以创建一个新的 java 类并像这样覆盖 onPushOpen

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);
    

但是为了仍然接收推送通知,我仍然需要在 MyApplication.java 类中使用这种已折旧的方法PushService.setDefaultPushCallback(this, MainActivity.class);

我怎样才能摆脱这种折旧的方法我看过这个问题,在那里我得到了一些帮助,但它没有回答关于折旧方法的这一部分。 Exception when opening Parse push notification.

我在想也许这个方法可能会被覆盖,但我不确定它是否能敏锐地处理接收推送或更多处理接收到推送后的推送?

@Override
    public void onPushReceive(final Context c, Intent i) 
        // Handle the received push
    

提前感谢您的帮助。

【问题讨论】:

parse.com/docs/push_guide#top/android。您使用的是什么解析 jar 版本? @Raghunandan 我使用的是 1.7.1 最新版本,我已经按照快速步骤指南查看了文档,如果您查看 PushService.setDefaultPushCallback 方法,它会说它已贬值。 不需要。您有自定义广播接收器。您需要做的就是在此处显示通知。 @Raghunandan 但是当我删除该行时,我无法再收到通知。那你说我应该用什么替换它? 【参考方案1】:

你正在继承ParsePushBroadcastReceiver

然后在清单中

    <receiver
        android:name=".Receiver " // your broadcastreceiver
        android:exported="false" >
        <intent-filter>
            // youtr actions
        </intent-filter>
    </receiver>

在广播接收器中

public class Receiver extends ParseBroadcastReceiver 

@Override
public void onReceive(Context context, Intent intent) 

    super.onReceive(context, intent);

        extras = intent.getExtras();
        if(intent.hasExtra("com.parse.Data")) 
        
            try
            
             json = new JSONObject(intent.getExtras().getString("com.parse.Data"));
             int notificationtype = json.getInt("notificationtype"); // this is send on the sender side
             switch(notificationtype)
             
              case 1:

                    // show your custom notification. Refer android notification guide 

                break;
                case 2:
                //rest of the code

注意:如果在推送中指定了“alert”或“title”,则使用getNotification 构造通知。所以发件人端没有警报和标题。

阅读管理推送生命周期@

https://www.parse.com/docs/push_guide#receiving/Android

参考

https://www.parse.com/questions/how-suppress-push-notification-from-being-displayed

【讨论】:

new JSONObject 行我收到编译错误Unhanded exception org.JSON.JSONExceptionextras = intent.getExtras(); 编译错误cannot resolve symbol extras @iqueqiorio 你需要将额外的声明为Bundle extras。此外,这取决于您如何在发送方发送数据。你用json吗?那是你自己想办法。 我只是通过云代码发送文本字符串,所以不,我只是发送纯文本。那么我不需要 JSON 部分吗? @iqueqiorio 阅读文档。如果你只想要推送通知,你不需要子类ParsePushBroadcastReceiver。确保您有警报和标题,并且您将显示通知。如果您需要自定义通知子类ParsePushBroadcastReceiver,然后自己处理通知部分。再次阅读文档 我已经阅读并重新阅读了文档,但是当我删除了setDefaultPushCallback depreciated 方法时,我无法收到推送通知?

以上是关于Android - 解析推送通知在打开时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

Worklight 应用程序在收到推送通知时崩溃

当我的应用程序打开时,我需要推送通知显示,如 Android 中的 whatsapp、Viber(Phonegap)

使用关闭的应用推送通知。 [解析服务器]

解析注册推送通知 - 如果用户未登录则崩溃

关闭应用程序后解析推送通知崩溃

注册推送通知期间的 Android 崩溃