我目前正在使用 parse 在 Android 应用程序上发送和接收推送通知。
一切都很好,直到我为调试构建类型向我的 build.gradle 添加了一个应用程序 ID 后缀:
defaultConfig {
applicationId "com.example.myapp"
...
}
buildTypes {
debug {
applicationIdSuffix ".debug"
...
}
release {
...
}
}
现在我可以在 Parse 中看到新安装已在 applicationId 字段中注册:com.example.myapp.debug
,因此在 list 文件中我使用了以下代码:
<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="${applicationId}" />
</intent-filter>
</receiver>
这样做我认为注册会根据构建类型动态变化。
实际上它不起作用:使用 .debug
后缀注册的安装没有 GCMSenderId
也没有 DeviceToken
,所以我不能收到任何通知。我显然遗漏了一点,或者我不明白注册是如何工作的,但我不知道如何让它正常。
Parse 是使用 applicationId 来注册应用程序,还是使用真实的包名(用于 R)?
有没有人设法处理具有不同构建类型(applicationId 后缀)的解析通知?
最佳答案
好吧,我终于明白了。我忘记在权限声明中添加动态 applicationId
...
<permission
android:name="${applicationId}.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />
问题已解决。
关于Android 解析、通知和构建类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30501793/