我正在尝试更新deviceToken
parse
表的Installation
。我通过rest
api用于android。但每当我通过以下代码更新我的devicetoken
ParseInstallation installation = ParseInstallation.getCurrentInstallation();
LinkedList<String> channels = new LinkedList<String>();
channels.add("Giants");
installation.put("channels",channels);
installation.put("GCMSenderId","56698194487");
installation.put("deviceToken","abcd");
installation.saveInBackground();
我收到了以下错误
引起:java.lang.IllegalArgumentException:无法修改 _Installation对象的
deviceToken
属性。
我尝试删除session
和installation
表,但没有任何人可以帮助我吗?
答案 0 :(得分:2)
如果您仍想更新 deviceToken ,则可以使用&#34; com.google.android.c2dm.intent.REGISTRATION&#34;广播意图到您的应用程序并解析android(从1.15.7 com.parse.GcmRegistrar.java)选择它并更新deviceToken。
当FCM和解析服务器(从2.3.8开始)仍然在寻找deviceToken id来发送FCM通知时,这非常有用。
Intent i = new Intent();
i.setAction("com.google.android.c2dm.intent.REGISTRATION");
i.putExtra("registration_id", FirebaseInstanceId.getInstance().getToken());
sendBroadcast(i);
除了com.google.firebase.MESSAGING_EVENT和INSTANCE_ID_EVENT意图过滤器之外,请确保在Android清单中有此功能
<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>
<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.my.package" />
</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>
答案 1 :(得分:0)
deviceToken
中{p> read only
字段为Installation
,因此您无法修改或更新它们。
Parse.com
android
docs
deviceToken:GCM用于跟踪注册ID的令牌。 在iOS设备上,这是Apple生成的令牌(只读)。
答案 2 :(得分:0)
如果有人还面临同样的问题。请在这里找到解决方案。
link:https://drive.google.com/drive/folders/0B04Quls_ltDDNnVrRE55Yk9sb2M?usp=sharing
提取附件并将其作为模块添加到项目中。
在settings.gradle中提及此模块文件。
在build.gradle的app moduel中添加此语句,如
//compile 'com.parse.bolts:bolts-tasks:1.3.0' //Comment it if available compile project(':Parse-release') //Use this one.
注意:我希望这个自定义库可以帮助你更新deviceToken,因为在这个库中,deviceToken是可编辑的,其余的都是一样的。