1

[已解决,但我仍然想要最后一个问题的答案,问题是我使用大写字母而不是小写字母,我让代码让其他人可以更正错误]

我已经尝试了一些论坛页面并通过stackoverflow搜索了相同的内容,但我没有找到解决方案。

我有 2 个使用推送消息的应用程序,一个应用程序运行良好,但另一个没有,我在 Google 注册了 2 次,所以我得到 2 个不同的 Api 密钥和 2 个不同的发件人 ID,如果我切换发件人 ID,我仍然没有'在不工作的应用程序上获取 ID(但它在运行良好的应用程序上工作),它永远不会触发 onRegistered 函数

我的清单

    <permission android:name=""com.sexolia.sexyAsiaticas.permission.C2D_MESSAGE" android:protectionLevel="normal" />
<uses-permission android:name="com.sexolia.sexyAsiaticas.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />

我的接收器

    <receiver android:name="com.google.android.gcm.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.sexolia.sexyasiaticas" />
        </intent-filter>
    </receiver>

我的服务

 <service android:name=".GCMIntentService" />

我的注册功能

public void registrarGcm(Context ctx)
{
      String regId = GCMRegistrar.getRegistrationId(ctx);
        if (regId.equals("")) 
        {
            GCMRegistrar.register(ctx, "795463622136"); //Sender ID
        } 
}

构造函数

        public GCMIntentService() {
    super("795463622136");
}

另外,我想知道,我如何决定哪个应用程序发送推送消息(是 api 密钥、发件人 ID 还是什么?)?当 1 个用户在 Google 上注册时,不同的应用程序有不同的 GCM id?

4

1 回答 1

0

好吧,您最后一个问题的答案是,每个注册 GCM 的应用程序都会收到不同的注册 ID,即使这些应用程序在同一设备上运行也是如此。这意味着根据您用于发送消息的注册 ID,GCM 将知道哪个应用程序发送消息。

顺便说一句,您可以在两个应用程序中使用相同的发件人 ID(又名 Google API 项目 ID)和 API 密钥来注册 GCM 并发送消息。您仍然会为每个应用程序获得不同的注册 ID。

于 2013-04-25T14:18:16.507 回答