2015-05-28 16 views
5

Obecnie używam parse do wysyłania i odbierania powiadomień push w aplikacji na Androida.
Wszystko było w porządku, dopóki nie dodano przyrostek id aplikacji do mojego build.gradle debug dla danego typu produkcji:Parse Androida, powiadomienia i typy budowania

defaultConfig { 
    applicationId "com.example.myapp" 
    ... 
} 

buildTypes { 
    debug { 
     applicationIdSuffix ".debug" 
     ... 
    } 
    release { 
     ... 
    } 
} 

Teraz widzę w Parse że nowe instalacje są zarejestrowane w dziedzinie applicationId: com.example.myapp.debug, więc w W pliku manifestu użyłem następującego fragmentu kodu:

<receiver 
     android:name="com.parse.GcmBroadcastReceiver" 
     android:permission="com.google.android.c2dm.permission.SEND" > 
     <intent-filter> 
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
      <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 

      <category android:name="${applicationId}" /> 

     </intent-filter> 
    </receiver> 

W ten sposób rejestracja byłaby dynamiczna zgodnie z rodzajem budowy.

W rzeczywistości to nie działa: instalacje zarejestrowane z sufiksem .debug nie mają GCMSenderId ani DeviceToken, więc nie mogę otrzymywać żadnych powiadomień. Najwyraźniej brakuje mi jakiegoś punktu lub nie rozumiem, jak działa rejestracja, ale nie wiem, jak to zmienić.
Czy analizator używa identyfikatora aplikacji do zarejestrowania aplikacji lub rzeczywistej nazwy pakietu (używanej dla R)?

Czy ktoś zdołał obsłużyć przetwarzanie powiadomień z różnymi buildTypes (sufiksem applicationId)?

Odpowiedz

5

Ok, w końcu to rozgryzłem. Zapomniałam dodać dynamiczny applicationId w deklaracji zgody ...

<permission 
    android:name="${applicationId}.permission.C2D_MESSAGE" 
    android:protectionLevel="signature" /> 

<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" /> 

Problem rozwiązany.

+1

Jeśli to sprawia, że ​​czujesz się lepiej, wpadłem na to samo, a twój "bezużyteczny temat" uratował mnie przed sobą (i więcej bólu). :) Dzięki –