Android : 错误 com.parse.ParseException: 在此操作中必须至少指定一个 ID 字段 (installationId,deviceToken) [英] Android : Error com.parse.ParseException: at least one ID field (installationId,deviceToken) must be specified in this operation
问题描述
我在我们的应用程序中使用了推送通知的解析,但在设备注册时出现了一些问题,错误如下所示.还有一个问题,当我们向设备发送推送通知时,设备收到的通知不止一个.虽然我们也将解析库升级到了 Parse 1.4.1.请帮助我,提前谢谢.
I am using the parse for push-notification in our application but some problem in registration of device, the error is shown below. There are also problem ,when we send push notification to the device more than one notification received by the device. although we have also upgraded the parse library to the Parse 1.4.1.Please help me,thanks in advance.
错误首次安装应用时显示:
04-14 14:00:40.004: E/LOG(26045): Socket event: onConnect
04-14 14:00:41.874: E/ParseCommandCache(26045): Failed to run command.
04-14 14:00:41.874: E/ParseCommandCache(26045): com.parse.ParseException: at least one ID field (installationId,deviceToken) must be specified in this operation
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.ParseCommand$2.then(ParseCommand.java:348)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$10.run(Task.java:452)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$1.execute(Task.java:68)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task.completeImmediately(Task.java:448)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task.continueWith(Task.java:322)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task.continueWith(Task.java:333)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$8.then(Task.java:385)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$8.then(Task.java:377)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$11.run(Task.java:485)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$1.execute(Task.java:68)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task.completeAfterTask(Task.java:481)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task.access$300(Task.java:18)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$7.then(Task.java:350)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$7.then(Task.java:347)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task.runContinuations(Task.java:514)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task.access$700(Task.java:18)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$TaskCompletionSource.trySetResult(Task.java:569)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$TaskCompletionSource.setResult(Task.java:603)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$11$1.then(Task.java:497)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$11$1.then(Task.java:489)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$10.run(Task.java:452)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$1.execute(Task.java:68)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task.completeImmediately(Task.java:448)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task.access$200(Task.java:18)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$6.then(Task.java:315)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$6.then(Task.java:312)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task.runContinuations(Task.java:514)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task.access$700(Task.java:18)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$TaskCompletionSource.trySetResult(Task.java:569)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$TaskCompletionSource.setResult(Task.java:603)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$11$1.then(Task.java:497)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$11$1.then(Task.java:489)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$10.run(Task.java:452)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$1.execute(Task.java:68)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task.completeImmediately(Task.java:448)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task.continueWith(Task.java:322)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task.continueWith(Task.java:333)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$11.run(Task.java:489)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$1.execute(Task.java:68)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task.completeAfterTask(Task.java:481)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task.access$300(Task.java:18)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$7.then(Task.java:350)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$7.then(Task.java:347)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task.runContinuations(Task.java:514)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task.access$700(Task.java:18)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$TaskCompletionSource.trySetResult(Task.java:569)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$TaskCompletionSource.setResult(Task.java:603)
04-14 14:00:41.874: E/ParseCommandCache(26045): at com.parse.Task$3.run(Task.java:228)
04-14 14:00:41.874: E/ParseCommandCache(26045): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
04-14 14:00:41.874: E/ParseCommandCache(26045): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
04-14 14:00:41.874: E/ParseCommandCache(26045): at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
04-14 14:00:41.874: E/ParseCommandCache(26045): at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
04-14 14:00:41.874: E/ParseCommandCache(26045): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
04-14 14:00:41.874: E/ParseCommandCache(26045): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
04-14 14:00:41.874: E/ParseCommandCache(26045): at java.lang.Thread.run(Thread.java:841)
更新代码
Parse.initialize(this, Constant.PARSE_APP_ID, Constant.PARSE_CLIENT_KEY);
ParseACL defaultACL = new ParseACL();
defaultACL.setPublicReadAccess(true);
ParseACL.setDefaultACL(defaultACL, true);
PushService.setDefaultPushCallback(this, MainActivity.class);
ParseInstallation.getCurrentInstallation().getInstallationId();
ParseInstallation.getCurrentInstallation().saveInBackground();
这是我在parse.com上注册时使用的代码
This is the code which I used for the registration on parse.com
PushService.subscribe(this, "name",Detail.class);
这是我用来注册chanels的代码
This is the code which i used for the registration of the chanels
推荐答案
我们遇到了类似的问题:
We had a similar issue:
我们不得不移动:PushService.setDefaultPushCallback(this, MainActivity.class);
进入 MainActivity#onCreate
,我们尝试在我们的应用程序类中调用它,但它兑现了.
Into the MainActivity#onCreate
, we tried calling this in our application class but that cashed.
解析在这个问题上真的没有帮助,希望是其中之一并提供一些见解.
Parse are really unhelpful on this matter, hopefully one of them and provide some insight.
这篇关于Android : 错误 com.parse.ParseException: 在此操作中必须至少指定一个 ID 字段 (installationId,deviceToken)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!