2016-12-23 26 views
8

Sadece uygulama ön planda değilse, kullanıcıya bildirimde bulunmam gerekir. İşte benim public class MyFirebaseMessagingService applicationInForeground() yönteminiKontrol nasıl yapılır?

+1

http://stackoverflow.com/questions/2166961/determining-the-current-foreground-application-from-a-background-task-or-service –

+0

Aktivitenin yaşam döngüsü geri bildirimlerini kullanabilirsiniz. BG/FG –

+0

'a gittiğinde servise yayın gönder Uygulamada kaç etkinlik kullanıyorsunuz? –

cevap

11

Sen android sistem hizmetinden uygulama süreçleri çalıştıran kontrol edebilirsiniz uygulamaya

FirebaseMessagingService { 
    @Override 
    public void onMessageReceived(RemoteMessage remoteMessage) { 
     if(applicationInForeground()) { 
      Map<String, String> data = remoteMessage.getData(); 
      sendNotification(data.get("title"), data.get("detail")); 
     } 

    } 

ihtiyacını uzanır. Bunu deneyin: ( )

+0

Merhaba, Android kullanıcısıyım. Aynı sorunla karşı karşıyayım ancak getPackageName() yönteminin nasıl içe aktarılacağı konusunda takılıyorum. GetPackageName() içerikten mi geliyor? Hizmetteyken içeriğe nasıl erişilir? –

+0

Ve başka bir sorum, bu kod Android oreo'ya kadar Android jellybean'da çalışır mı? Teşekkür ederiz –

+0

Bu işlev, Hizmetten Android 7.0 üzerinde çalışmıyor. –

11

Google I/O 2016'da, konulardan birinin uygulamanızın ön planda olup olmadığını algıladığı konulardan biri olan bir konuşma yaptım. Uygulamanızda başlatılan her etkinlik için bir sayaç artırarak ve ardından durdurulan her etkinlik için azaltarak, ActivityLifecycleCallbacks'u kullanabilirsiniz. Sayaç> 1 ise, uygulamanız ön plandadır. Konuşmanın alakalı kısmı, YouTube here'da görülebilir.

+0

Videoyu paylaştığınız için çok teşekkürler! – Sunny

+1

@ doug-stevenson Neden bu programı FirebaseMessagingService'de göstermiyorsunuz, böylece Android programcıları daha iyi bir yaşam sürüyorlar? Ve daha genel olarak, neden com.google.firebase: ** opensource değil? – rashtao

+0

Bunu zayıf bir şekilde yapıyorum [bunun gibi] (https://stackoverflow.com/a/49181737/4269149), bu konudaki düşünceleriniz nelerdir? –