Android 解析时出现推送通知错误
处境 我已经在ANDROID中使用Parse实现了推送通知。一切都很好,我可以接收推送/发送等,唯一的问题是,当我安装我的应用程序时,会发生以下情况: 如果这是设备上的首次安装:没有问题 如果不是第一次安装,这意味着设备已经进行了PARSE/GCM注册,它会生成以下错误: 产生的错误 是的,它生成它,但应用程序不会崩溃!这个应用程序仍然可以工作:推送通知也可以,但你可以理解这不是100%可靠的 他想要什么。。?我该怎么办?问题的原因是什么?这是我的密码: Application.java 在我的mainActivity中,我只是将deviceToken(在我的例子中是installationId)连接到我的userAgent中:这也很好!即使生成了错误,installationID也会插入到userAgent中 MainActivity.java 我的代码中有错误吗Android 解析时出现推送通知错误,android,parse-platform,push-notification,google-cloud-messaging,task,Android,Parse Platform,Push Notification,Google Cloud Messaging,Task,处境 我已经在ANDROID中使用Parse实现了推送通知。一切都很好,我可以接收推送/发送等,唯一的问题是,当我安装我的应用程序时,会发生以下情况: 如果这是设备上的首次安装:没有问题 如果不是第一次安装,这意味着设备已经进行了PARSE/GCM注册,它会生成以下错误: 产生的错误 是的,它生成它,但应用程序不会崩溃!这个应用程序仍然可以工作:推送通知也可以,但你可以理解这不是100%可靠的 他想要什么。。?我该怎么办?问题的原因是什么?这是我的密码: Application.java 在我的
谢谢请尝试以下操作:
ParseInstallation.getCurrentInstallation().saveInBackground(new SaveCallback()
{
@Override
public void done(ParseException e)
{
PushService.setDefaultPushCallback(Application.this, MainActivit.class);
}
});
我记得,在使用setDefaultPushCallback时,不需要保存安装。尝试删除保存的安装,并查看是否仍然发生
setDefaultPushCallback将自动为您保存安装。我记不起在哪里找到的,但在某个论坛上,有人告诉我这是一种行为。我想在没有第一次完成的情况下进行第二次保存会使安装处于错误状态,导致出现非致命错误msg。我记得,使用setDefaultPushCallback时不需要保存安装。尝试删除保存的安装,看看它是否仍然发生。@cYrixmorten我已经删除了它,它似乎可以正常工作。但是告诉我,saveInBackground不是让解析工作的基础吗?问题是setDefaultPushCallback会自动为您保存安装。我记不起在哪里找到的,但在某个论坛上,有人告诉我这是一种行为。我猜在没有第一次完成的情况下,第二次保存会使安装处于错误状态,导致非致命错误消息。
E/ParseCommandCache﹕ Failed to run command.
com.parse.ParseException: at least one ID field (installationId,deviceToken) must be specified in this operation
@Override
public void onCreate() {
super.onCreate();
// Initialize the Parse SDK.
Parse.initialize(this, "x", "x");
// Specify an Activity to handle all pushes by default.
PushService.setDefaultPushCallback(this, MainActivity.class);
ParseInstallation.getCurrentInstallation().saveInBackground();
}
deviceToken = ParseInstallation.getCurrentInstallation().getInstallationId();
webSettings.setUserAgentString(userAgent + " ||" + deviceToken);
ParseInstallation.getCurrentInstallation().saveInBackground(new SaveCallback()
{
@Override
public void done(ParseException e)
{
PushService.setDefaultPushCallback(Application.this, MainActivit.class);
}
});