11

通知がクリックされたとき、特定のアクティビティをバックグラウンドでクリックするときに追加のパラメータを使用して開きます。私はclick_actionを使用していますが、正常に動作しています。アプリは目的のアクティビティを開きます。Firebase Cloud Messaging(FCM) - ユーザがエキストラを使用して通知をクリックしたときにアクティビティを開始する

このアクティビティに余分なパラメータ(id)を渡す必要があるため、通知に関連する希望の詳細を提示できます。電子メールアプリケーションと同様に、通知をクリックすると、その特定の電子メールの詳細が開きます。

どうすればいいですか?

+0

いくつかのコードを共有できますか?アプリでも同様のことがありますが、GCMを使用しています。通知を受け取るサービスでは、単にインテントに余分な文字列を追加し、それを使用してどのフラグメントを開くべきかを確認します。 – Vucko

+0

私は助けを必要としません、私のアプリは動作します:)あなたはそれを修正しました – Vucko

+0

あなたはそれを解決しましたか?私は同じ問題を取り上げています。私はtargetActivityを開始しましたが、意図から補足を取得しませんでした。何か解決策はありますか? –

答えて

32

は[OK]を、私は解決策を発見しました。

これは私がAndroidManifest.xmlを

<activity 
    android:name=".ActivityXPTO" 
    android:screenOrientation="sensor" 
    android:windowSoftInputMode="stateHidden"> 
    <intent-filter> 
     <action android:name="ACTIVITY_XPTO" />   
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 
アプリが閉じている

や背景とユーザーがクリックでで

{ 
    "registration_ids": [ 
    "XXX", 
    ... 
    ], 
    "data": { 
    "id_offer": "41" 
    }, 
    "notification": { 
    "title": "This is the Title", 
    "text": "Hello I'm a notification", 
    "icon": "ic_push", 
    "click_action": "ACTIVITY_XPTO" 
    } 
} 

アプリにサーバから送信していJSONであります通知では、自分のActivityXPTOを開き、必要なid_offerを取得します。

public class ActivityXPTO extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     ... 

     String idOffer = ""; 

     Intent startingIntent = getIntent(); 
     if (startingIntent != null) { 
      idOffer = startingIntent.getStringExtra("id_offer"); // Retrieve the id 
     } 

     getOfferDetails(id_offer); 
    } 

    ... 
} 

それはそれだ...

+2

http://stackoverflow.com/questions/37554274/open-app-on-firebase-notification-received-fcm/37626817#37626817 –

+0

あなたの素敵な答えをありがとう。あなたの方法を使用して、私はtargetActivityを開始しましたが、意図から補足物を取得しませんでした。何か解決策はありますか? –

+0

こんにちは@ Md.SajedulKarim、サーバーから送信しているjsonの例がありますか?あなたは、あなたのJSONの "データ"オブジェクトの中にエキストラを追加する必要があります。 – m4n3k4s

0

アクティビティを開始するために使用する追加情報をインテントに追加し、メソッドonCreateのアクティビティを使用してそれらを使用するgetIntent()。getExtras()を使用します。たとえば、次のように活動を開始

Intent intent = new Intent(context, TargetActivity.class); 
Bundle bundle = new Bundle(); 
bundle.putString("extraName", "extraValue"); 
intent.putExtras(bundle); 
startActivity(intent); 

活動で

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Bundle bundle = getIntent().getExtras(); 
    String value = bundle.getString("extraName"); 
    .... 
} 
+1

アクティビティを開始するのは私のものではありません。これはシステムによって注意が払われます。アプリはバックグラウンドであるか、閉じています。 – m4n3k4s

関連する問題