2017-06-20 144 views
1

我正在使用react-native-fcm在反應本機中開發電話應用程序,以便在來電時通知用戶。這就是我收到通知後的應用程序。隱藏安卓活動

Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.myApp"); 

    startActivity(launchIntent); 

一切都很好,直到現在,但我希望我的活動從背景開始,不顯示任何有關它的視覺信息。我可以在MainActivity中使用moveTaskToBack(true);來做到這一點,但它會閃爍1秒,任何不閃爍的方法?

+0

你使用的是https:// github。com/evollu/react-native-fcm – Dayan

+0

是的,我正在使用react-native-fcm。 –

回答

0

你爲什麼使用一個活動?如果您想在後臺運行,請使用服務。如果以後需要顯示用戶界面,則啓動一個活動。

+0

使用服務,我運行Javascript代碼? –

+0

您可以在活動中的服務中執行任何操作,除了顯示UI(甚至可以解決這個問題)。 –

0

由於您只想顯示Firebase服務的通知。看看你的清單文件:

<service android:name=".YourFirebaseMessagingService" android:enabled="true" android:exported="true"> 
    <intent-filter> 
    <action android:name="com.google.firebase.MESSAGING_EVENT"/> 
    </intent-filter> 
</service> 

該服務具有與com.google.firebase.MESSAGING_EVENT行動的意圖過濾器,那麼你只需要通過延長FirebaseMessagingService實現服務和覆蓋onMessageReceived方法。

注意onMessageReceived提供大多數消息類型,但下列情況除外:交付

通知消息當你的應用程序是在後臺。在這種情況下,通知將傳遞到設備的系統托盤。用戶點擊通知會默認打開應用程序啓動器。

帶有通知和數據有效負載的消息,包括背景和前景。在這種情況下,通知將傳遞到設備的系統托盤,並且數據有效負載將以您啓動程序活動的目的附加內容傳遞。在主線程上運行

enter image description here

服務,除非明確地告訴別人,否則。這意味着您可以顯示任何您想要的通知,或啓動新的活動。

下面是上面的例子:

public class YourFirebaseMessagingService extends FirebaseMessagingService { 

    @Override 
    public void onMessageReceived(RemoteMessage remoteMessage) { 
     if (remoteMessage.getNotification().getBody() != null) { 
      Log.e("FIREBASE", "Message Notification Body: " + remoteMessage.getNotification().getBody()); 
      //DO WHATEVER YOU NEED HERE TO DISPLAY YOUR MESSAGE OR ACTIVITY 
     } 
    } 
} 

需要注意的是,如果你想喚醒你的後臺應用程序,你將需要執行一個POST到以下網址:

POST https://fcm.googleapis.com/fcm/send

以下標題:

Key :內容類型,值:應用/ JSON

重點:授權,值:鍵= <your-server-key>

有關更多信息,請查看本linkanswer

+0

我需要將我的服務添加到清單嗎? –

+0

是的,我更新了我的答案。 – Dayan

+0

唯一的問題是,觸發我的應用程序打開的事件是在一個NPM包react-native-fcm我該如何處理這是android文件? –