ユーザーが通知をクリックしたとき、アプリがバックグラウンドにあるときに、いくつかの追加パラメーターを使用して特定のアクティビティを開こうとしています。 click_action
を使用していますが、正常に機能しています。アプリは目的のアクティビティを開きます。
ここで、通知に関連する目的の詳細を提示できるように、サーバーがこのアクティビティにid
という追加のパラメーターを渡す必要があります。電子メールアプリケーションのように、通知をクリックすると、その特定の電子メールの詳細が開きます。
これどうやってするの?
OK、解決策を見つけました。
これは、サーバーからアプリに送信するJSONです
{
"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"
}
}
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>
アプリが閉じているかバックグラウンドで、ユーザーが通知をクリックすると、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(idOffer);
}
...
}
それでおしまい...
アクティビティの開始に使用する追加情報をIntentに追加し、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");
....
}