2012-09-10 6 views
0

J'ai le problème que je reçois toutes les notifications dans tous les environnements. Toutes les versions ont actuellement le même nom de package. Donc, une seule version peut être installée sur l'appareil en même temps. Mais je reçois alors des notifications ciblant toutes les constructions (peut être la bonne ou l'une des autres). J'ai regardé dans l'identifiant d'enregistrement et c'est toujours la même chose. Le problème est probablement que toutes les applications partagent le même nom de package?Android C2DM dans différents environnements (mise en scène, production, débogage)

Les paramètres que je vois pour registeration sont:

  1. récepteur de diffusion dans le manifeste:

    <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:

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

  3. méthode d'enregistrement:

    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); 
    

Qu'est-ce exactement ce que je dois changer afin de ne recevoir que des notifications ciblées à l'application en cours d'exécution (environnement)?

En outre, si le problème est le nom du package, je ne comprends pas exactement pourquoi. Disons que je me connecte avec la version de débogage. Inscrivez-vous avec le nom du paquet x. Maintenant, je m'enregistre avec la production, également avec le nom de paquet x. Vais-je recevoir les notifications de débogage, car il a été enregistré précédemment avec le même nom de package? Cela signifie-t-il que si je n'ai jamais utilisé/enregistré avec la version de débogage, je ne recevrai jamais de notifications de l'environnement de débogage en utilisant l'application de production?

Répondre

1

Actuellement, je viens de renommer le paquet pour l'environnement DEBUG. Donc c'est comme si j'avais d'autres applications, ça devenait assez compliqué mais ... Je ne sais pas s'il y a une autre solution, mais je vais être heureux de savoir :)

EDIT: peut-être qu'il peut être résolu de la partie du troisième serveur. Je veux dire, lors de l'inscription, vous pouvez envoyer à votre serveur une variable avec la valeur debug/staging/prod et l'identifiant de votre appareil dans l'une des 3 bases de données (une avec application enregistrée pour débogage, une pour mise en scène). S'il vous plaît laissez-moi savoir ce que vous en pensez!

+0

J'ai déjà un script de construction pour faire des applications pour les environnements de production avec un nom différent. Mais je ne l'utilise jamais. Êtes-vous sûr qu'il résout le problème C2DM? – Ixx

+0

Je le fais uniquement pour le débogage, mais pour différentes versions de l'application, je pense que ce n'est pas possible :( –

+0

C'est le même principe: vous mettez un "debug" dans le nom du paquet de la version de débogage, "staging" sur la version – Ixx

Questions connexes