2012-09-10 80 views
0

我遇到了在所有環境中都收到所有通知的問題。所有的版本都有相同的包名稱。因此,只能同時在設備上安裝一個版本。但是,我得到了針對所有構建的通知(可以是正確的或其他的)。Android C2DM在不同的環境中(分段,生產,調試)

我看着註冊ID,它總是一樣的。問題可能是所有的應用程序共享相同的軟件包名稱?

我看到registeration的參數是:

  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, "[email protected]"); 
    context.startService(registrationIntent); 
    

究竟是什麼我爲了改變只接收有針對性的到正在運行的應用程序(環境)通知?

此外,如果問題是包名稱,我不明白爲什麼。比方說,我用調試版本登錄。註冊包名x。現在我註冊了產品,也使用軟件包名稱x。我是否會收到來自調試的通知,因爲它之前使用相同的軟件包名稱進行了註冊?這是否意味着如果我從未使用/註冊過調試版本,我將永遠不會收到來自使用生產應用程序的調試環境的通知?

回答

1

目前,我剛更名爲DEBUG環境的軟件包。所以它就像我有其他應用程序,它會非常混亂,但... 我不知道是否有另一種解決方案,但我會很高興找到:)

編輯:也許它可以解決從第三方服務器。我的意思是,在註冊時,您可以向您的服務器發送一個值爲debug/staging/prod的變量,它會將您的設備ID置於三個數據庫中的一個(一個用於註冊調試,一個用於分級,一個用於產品) 請讓我知道你對此有何看法!

+0

我已經有一個構建腳本來爲生產環境製作具有不同名稱的應用程序。但我從不使用它。你確定它解決了C2DM問題嗎? – Ixx

+0

我這樣做只是爲了調試,但對於不同版本的應用程序,我認爲它不是可行的:( –

+0

原理相同,在調試版本的包名稱中包含「調試」,在登臺版本中「登臺」等 – Ixx

相關問題