Android Parse,notification和buildTypes

时间:2015-05-28 08:59:28

标签: android parse-platform notifications google-cloud-messaging

我目前正在使用 parse 在Android应用上发送和接收推送通知 一切都很好,直到我为我的build.gradle添加了一个应用程序ID后缀,用于调试构建类型:

defaultConfig {
    applicationId "com.example.myapp"
    ...
}

buildTypes {
    debug {
        applicationIdSuffix ".debug"
        ...
    }
    release {
        ...
    }
}

现在我可以在Parse中看到新的安装已经在applicationId字段中注册:com.example.myapp.debug,因此在清单文件中我使用了以下代码:

<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)?

是否有人设法处理具有不同buildTypes(applicationId后缀)的解析通知?

1 个答案:

答案 0 :(得分:5)

好的,我终于明白了。我忘了在权限声明中添加动态applicationId ...

<permission
    android:name="${applicationId}.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />

<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />

问题解决了。