2016-09-23 11 views
2

firebase通知を自分のアプリケーションに統合しましたが、特定のアクティビティを開く通知を送信したいと思います。ユーザーがGoogle Playストアをクリックして訪問するように促す通知が表示されます。firebase通知から特定のアクティビティを開く

私が使用したコードFirebase console: How to specify click_action for notificationsを見ましたが、変数clsを初期化する際にエラーが発生しています。私はエラーをクリアするために、cls = nullを定義して解決しようとしました。指定されたアクティビティをclick_actionを使用して開けません。

public class ClickActionHelper { 
public static void startActivity(String className, Bundle extras, Context context){ 
Class cls=null; 
try { cls = Class.forName(className); 
} 
catch(ClassNotFoundException e){ 
//means you made a wrong input in firebase console 
} 
Intent i = new Intent(context, cls); 
i.putExtras(extras); context.startActivity(i); 
}  
} 

私は間違っていますか?これをどのように機能させるには?

答えて

5

アプリを開いて特定の操作[バックグラウンド]を実行する場合は、通知ペイロードでclick_actionを設定し、起動するアクティビティのインテントフィルタにマップします。たとえば、次のようなインテントフィルタをトリガするためにOPEN_ACTIVITY_1にclick_actionを設定します。

FCMのドキュメントで示唆したように、

{ 

    "to":"some_device_token", 

    "content_available": true, 
    "notification": { 
    "title": "hello", 
    "body": "yo", 
    "click_action": "OPEN_ACTIVITY_1" // for intent filter in your activity 
    }, 

"data": { 
"extra":"juice" 
} 
} 

とあなたのmainfestで

、このような形でJSONデータを送信するためにバックエンドを頼みますファイルは

<intent-filter> 
    <action android:name="OPEN_ACTIVITY_1" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
</intent-filter> 

あなたが通知をクリックすると、それはアプリを開き、このような場合には、あなたがclick_actionで定義する活動に直進し、「OPEN_ACTIVTY_1」以下のようにあなたの活動のためのインテントフィルタを追加します。より多くのヘルプへのリンクの下にチェックアウト

Bundle b = getIntent().getExtras();// add these lines of code to get data from notification 
String someData = b.getString("someData"); 

Firebase FCM notifications click_action payload

Firebase onMessageReceived not called when app in background

Firebase console: How to specify click_action for notifications

をし、そのアクティビティ内の次の方法でデータを取得することができます
関連する問題