1

olduğunda sadece ben tezahür şu var denilen onMessageReceived - olmuyor nedirGcmListenerService uygulama ön planda

@Override 
    public void onMessageReceived(String from, Bundle data) { 
     ObjectMapper objectMapper = new ObjectMapper(); 
     Message message; 
     try { 
      message = objectMapper.readValue(String.valueOf(data.get("message")), Message.class); 
      MessageNotification.notify(this, message, 1); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

, uygulama ön planda olduğu zaman onMessageReceived çağrılan -

<service 
    android:name=".RegistrationIntentService" 
    android:exported="false" /> 

<service 
    android:name=".TestGcmListenerService" 
    android:exported="false"> 
    <intent-filter> 
     <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
     <category android:name="com.example.test" /> 
    </intent-filter> 
</service> 

<service 
    android:name=".RegistrationIDListenerService" 
    android:exported="false"> 
    <intent-filter> 
     <action android:name="com.google.android.gms.iid.InstanceID" /> 
    </intent-filter> 
</service> 

<receiver 
    android:name="com.google.android.gms.gcm.GcmReceiver" 
    android:exported="true" 
    android:permission="com.google.android.c2dm.permission.SEND"> 
    <intent-filter> 
     <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 

     <category android:name="com.example.test" /> 
    </intent-filter> 
</receiver> 

Ve onMessageReceived metodu izleyerek. Aksi takdirde çağrı yapılmaz ve bildirim gösterilmez. Uygulamayı açtığımda tüm bildirimler bir kerede gösteriliyor. kilitli ve işi yaparsanız

değil GcmListenereService uyandırma cihaz mı? Bunu nasıl çözebilirim?

cevap

1

etrafında googledaarattın ve hemen hemen İlgin, onMessageReceived() is only called when app is on foreground aynıdır github üzerinde Konuyu bulmayı başardılar. Nedeni sadece Bildirim Mesajları gönderilmesi nedeniyle oldu. iplik dahil tanımına göre de:

Bildirim Mesajı - bu uygulama tarafından hiçbir ara işleme içeren bir bildirim oluşturmak için tasarlanmıştır. Sadece uygulama çalışıyorsa, bunlar sadeceMessageReceived'e basıyor.

Veri Mesajları - bunlar sessizce uygulamanın mesajlaşma servisine veri aktarmak üzere tasarlanmıştır. Uygulama arka planda olsa bile MessageReceived'e basmışlar. Servis daha sonra normal sistem bildirim API'lerini kullanarak bir bildirim oluşturmayı seçebilir veya mesajı sessizce işlemeyi seçebilir.

ben tekme Veri Mesajları için davranışını bekliyor yaparken Bildirim Mesajları gönderiyor düşünüyorum.

Burada da github iplik belirtilen SO post of Shiprack bu. Bu yardımcı olur umarım. İyi şanslar.

İlgili konular