我在AndroidManifest
中有以下内容。我需要从我的webservice和Parse发送推送通知。问题是,如果我按下面的方式运行应用程序,我WS
(网络服务)的推送将会通过,Parse
中的推送不会。
如果我注释掉GCM部分,Parse将起作用。
我还注意到,在Parse表中,当两者都启用时,在deviceToken
列下,Parse会向|ID||1|
添加deviceToken
前缀。如果我注释掉GCM部分,Parse将不会将该前缀添加到deviceToken
。我不确定这是否重要......
任何想法我做错了什么?我需要支持这两种功能,但似乎与其他东西发生冲突。有什么想法吗?
如果您需要更多源代码,请告诉我......
<!-- ================================= GCM ================================= -->
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
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.moc.sif" />
</intent-filter>
</receiver>
<service
android:name=".pushnotif.gcm.GCMListener"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
<service
android:name=".pushnotif.gcm.GCMInstanceIdListener"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID" />
</intent-filter>
</service>
<service
android:name=".pushnotif.gcm.GCMRegistrationIntentService"
android:exported="false">
</service>
<!-- ================================= PARSE ================================= -->
<service android:name="com.parse.PushService" />
<receiver
android:name=".pushnotif.parse.receivers.ParsePushReceiver"
android:exported="false">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.USER_PRESENT" />
<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>
<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.moc.sif" />
</intent-filter>
</receiver>
答案 0 :(得分:1)
这应该由Parse团队修复。在我的情况下,不幸的是其他第三个库也获得令牌,没有办法解决它。 Parse还会阻止“deviceToken”字段,因此我无法更新事件以更正它。
答案 1 :(得分:0)
好像我已经修好了。
问题在于初始化Parse,之后我调用了这个方法:
InstanceID instanceID = InstanceID.getInstance(getApplicationContext());
String token = instanceID.getToken(getString(R.string.gcm_sender_id), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
显然使Parse覆盖了表中的deviceToken
。我使用上面的token
发送到我的网络服务。我要解决的问题是注释掉上面两行并使用Parse生成的deviceToken
代替。因此,Parse和我的web服务都接收到从Parse库获得的相同deviceToken
。现在都工作了......