我遇到了在所有環境中都收到所有通知的問題。所有的版本都有相同的包名稱。因此,只能同時在設備上安裝一個版本。但是,我得到了針對所有構建的通知(可以是正確的或其他的)。Android C2DM在不同的環境中(分段,生產,調試)
我看着註冊ID,它總是一樣的。問題可能是所有的應用程序共享相同的軟件包名稱?
我看到registeration的參數是:
廣播接收機在清單:
<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>
權限:
<permission android:name="com.company.product.permission.C2D_MESSAGE"
android:protectionLevel="signature"/> <uses-permission android:name="com.company.product.permission.C2D_MESSAGE"/>登記方法:
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, "[email protected]"); context.startService(registrationIntent);
究竟是什麼我爲了改變只接收有針對性的到正在運行的應用程序(環境)通知?
此外,如果問題是包名稱,我不明白爲什麼。比方說,我用調試版本登錄。註冊包名x。現在我註冊了產品,也使用軟件包名稱x。我是否會收到來自調試的通知,因爲它之前使用相同的軟件包名稱進行了註冊?這是否意味着如果我從未使用/註冊過調試版本,我將永遠不會收到來自使用生產應用程序的調試環境的通知?
我已經有一個構建腳本來爲生產環境製作具有不同名稱的應用程序。但我從不使用它。你確定它解決了C2DM問題嗎? – Ixx
我這樣做只是爲了調試,但對於不同版本的應用程序,我認爲它不是可行的:( –
原理相同,在調試版本的包名稱中包含「調試」,在登臺版本中「登臺」等 – Ixx