0

我遇到的问题是我在所有环境中都收到了所有通知。所有构建当前具有相同的包名称。因此,只能在设备上同时安装一个版本。但是我会收到针对所有构建的通知(可以是正确的一个或其他一个)。

我查看了注册ID,它总是一样的。问题可能是所有应用程序共享相同的包名?

我看到的注册参数是:

  1. 清单中的广播接收器:

    <receiver android:name="com.google.android.c2dm.C2DMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND">
        <intent-filter>
          <action android:name="com.google.android.c2dm.intent.RECEIVE" />
          <category android:name="com.company.product" />
        </intent-filter>
        <intent-filter>
          <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
          <category android:name="com.company.product" />
      </intent-filter>
    </receiver>
    
  2. 权限:

    <permission android:name="com.company.product.permission.C2D_MESSAGE"
    android:protectionLevel="signature"/> <uses-permission android:name="com.company.product.permission.C2D_MESSAGE"/>

  3. 报名方式:

    Intent registrationIntent = new Intent(REQUEST_REGISTRATION_INTENT);
    registrationIntent.setPackage(GSF_PACKAGE);
    registrationIntent.putExtra(EXTRA_APPLICATION_PENDING_INTENT,
            PendingIntent.getBroadcast(getApplicationContext(), 0, new Intent(), 0));
    registrationIntent.putExtra(EXTRA_SENDER, "app@company.com");
    context.startService(registrationIntent);
    

为了仅接收针对正在运行的应用程序(环境)的通知,我究竟需要进行哪些更改?

此外,如果问题是包名称,我不明白为什么。假设我使用调试版本登录。使用包名 x 注册。现在我注册生产,也使用包名 x。我是否会收到来自调试的通知,因为它之前使用相同的包名称注册?这是否意味着如果我从未使用/注册过调试版本,我将永远不会使用生产应用程序收到来自调试环境的通知?

4

1 回答 1

1

目前,我刚刚为 DEBUG 环境重命名了包。所以就像我有其他应用程序一样,它变得很乱但是......我不知道是否有其他解决方案,但我会很高兴发现:)

编辑:也许它可以从第三方服务器方解决。我的意思是,在注册时,您可以向您的服务器发送一个值为 debug/staging/prod 的变量,它会将您的设备 ID 放入 3 个数据库之一中(一个带有为调试注册的应用程序,一个用于暂存,一个用于生产)请让我知道您对此有何看法!

于 2012-09-10T08:42:08.970 回答