不同环境中的Android C2DM(登台、生产、调试)
我的问题是,我正在接收所有环境中的所有通知。所有生成当前都具有相同的包名。因此,设备上只能同时安装一个版本。但我会收到针对所有构建的通知(可以是正确的构建,也可以是其他构建) 我查了一下注册号,结果总是一样的。问题可能是所有应用程序共享相同的包名 我看到的注册参数有:不同环境中的Android C2DM(登台、生产、调试),android,android-c2dm,Android,Android C2dm,我的问题是,我正在接收所有环境中的所有通知。所有生成当前都具有相同的包名。因此,设备上只能同时安装一个版本。但我会收到针对所有构建的通知(可以是正确的构建,也可以是其他构建) 我查了一下注册号,结果总是一样的。问题可能是所有应用程序共享相同的包名 我看到的注册参数有: 舱单中的广播接收器: <receiver android:name="com.google.android.c2dm.C2DMBroadcastReceiver" android:permission="com.google
<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>
另外,如果问题是包名,我不明白确切的原因。假设我使用调试版本登录。以包名x注册。现在我注册了production,也注册了包名x。我是否会收到来自调试的通知,因为它以前是用相同的包名注册的?这是否意味着,如果我从未使用/注册过调试版本,我将永远不会使用生产应用程序收到来自调试环境的通知?目前,我刚刚为调试环境重命名了包。因此,就像我有其他应用程序一样,它变得非常混乱,但是。。。 我不知道是否还有其他解决方案,但我很高兴能找到:) 编辑:也许可以通过第三方服务器解决。我的意思是,在注册时,您可以向服务器发送一个值为debug/staging/prod的变量,它会将您的设备id放入3个数据库中的一个(其中一个数据库的应用程序注册为debug,一个用于staging,一个用于prod)
请让我知道你对此有何看法 我已经有了一个构建脚本,可以为具有不同名称的生产环境创建应用程序。但我从不使用它。你确定它解决了C2DM问题吗?我这样做只是为了调试,但对于不同版本的应用程序,我认为它是不可能的:(这是相同的原理。你在调试版本的包名“staging”中加了一个“debug”关于登台版本等等。好主意,但是服务器用户不想这样做。必须在客户端解决它。我将使用不同的包名进行构建,无论如何都必须这样做才能同时使用所有版本。希望这也能解决C2DM问题。
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);