Firebase Cloud Messaging (FCM) - 当用户点击带有附加功能的通知时启动 Activity
Firebase Cloud Messaging (FCM) - Launch Activity when user clicks the notification with extras
我正在尝试在用户单击通知时打开特定的 activity,当应用程序处于后台时,带有一些额外的参数。我正在使用 click_action
,它工作正常,应用程序打开所需的 Activity。
现在我需要服务器向这个 Activity 传递一个额外的参数,一个 id
,这样我就可以显示与通知相关的所需详细信息。就像电子邮件应用程序一样,当我们单击通知时会打开该特定电子邮件的详细信息。
我该怎么做?
向用于启动的 Intent 添加附加信息 Activity,并在 activity 方法 onCreate 中使用 getIntent().getExtras() 来使用它们。例如:
开始 activity:
Intent intent = new Intent(context, TargetActivity.class);
Bundle bundle = new Bundle();
bundle.putString("extraName", "extraValue");
intent.putExtras(bundle);
startActivity(intent);
在activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getIntent().getExtras();
String value = bundle.getString("extraName");
....
}
好的,我找到了解决方案。
这是我从服务器发送到应用程序的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);
}
...
}
就是这样...
我正在尝试在用户单击通知时打开特定的 activity,当应用程序处于后台时,带有一些额外的参数。我正在使用 click_action
,它工作正常,应用程序打开所需的 Activity。
现在我需要服务器向这个 Activity 传递一个额外的参数,一个 id
,这样我就可以显示与通知相关的所需详细信息。就像电子邮件应用程序一样,当我们单击通知时会打开该特定电子邮件的详细信息。
我该怎么做?
向用于启动的 Intent 添加附加信息 Activity,并在 activity 方法 onCreate 中使用 getIntent().getExtras() 来使用它们。例如:
开始 activity:
Intent intent = new Intent(context, TargetActivity.class);
Bundle bundle = new Bundle();
bundle.putString("extraName", "extraValue");
intent.putExtras(bundle);
startActivity(intent);
在activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getIntent().getExtras();
String value = bundle.getString("extraName");
....
}
好的,我找到了解决方案。
这是我从服务器发送到应用程序的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);
}
...
}
就是这样...