gpt4 book ai didi

android - 使用 firebase api 打开特定页面

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:29:36 24 4
gpt4 key购买 nike

我正在使用以下代码向设备发送推送通知。

      var nTitle = "New message from " + $rootScope.clients_firstName;
var to = "DeviceToken is here";
var notification = {
'title': nTitle,
//'body': 'Click here to more details...',
'icon': 'firebase-logo.png',
'click_action': 'openapp'
};

var key = 'your key';
fetch('https://fcm.googleapis.com/fcm/send', {
'method': 'POST',
'headers': {
'Authorization': 'key=' + key,
'Content-Type': 'application/json'
},
'body': JSON.stringify({
'notification': data,
'to': to
})
}).then(function(response) {
//console.log("res ", response);
}).catch(function(error) {
console.error("err ", error);
});

推送通知在设备上成功发送。

但是当我点击通知时,特定页面应该是打开的。

例如 'click_action' : 'openapp/somepage'

然后当我点击推送通知时应该打开“somepage”。

AndroidManifest.xml

<activity android:name="MainActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">

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

</activity>

我的项目结构

--platforms
--plugins
--www
--app
--about
--about.html
--about.ctrl.js
--product
--product.html
--product.ctrl.js
--css
--js
--lib
index.html

如果我点击通知并想打开产品或关于页面,那么我需要做什么?

这里有什么问题?请告诉我正确的解决方案。

最佳答案

要让您的应用在后台时可以点击通知,您需要 click_action通知负载中的属性。

请检查这个section Firebase 文档。

此外,当您定义 click_action属性,您还需要相应的 <action> <intent-filter> 中的属性您希望启动的 Activity 。

video非常详细地解释了它。

但是请注意,您不能设置 click__action如果您要从 Firebase 控制台发送通知,请使用该属性。只有从您自己的管理服务器或使用 Firebase Cloud Functions 发送通知时,您才能这样做。

最后,在启动的 Activity 中,您可以设置额外的 Data使用数据属性(也显示在我上面链接的同一文档中)。当您通过单击通知启动您的应用程序时,您可以使用 getIntent() 获取通知数据。 .查看this answer有关如何执行此操作的更多详细信息。

问题更新后编辑:-

而不是把 <intent-filter>MainActivity , 将过滤器放在 <activity> 中单击通知时要打开的 Activity 的标记。一个例子如下:-

<activity android:name="ProductDetailsActivity" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">

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

现在您指定的 Activity 已打开,您可以从 data 中获取信息使用 getIntent() 通知的一部分.

例如,如果您的通知负载具有以下结构,

payload = {
notification: {
title: `You ordered a new product`,
click_action : 'HANDLE_NOTIFICATION',

},
data : {
product_id : 'ABC98292',
type : `Clothes`,
product_name : 'Cotton spring shirt'
}
};

然后你可以得到product_id来自使用 getIntent().getStringsExtra("product_id") 的通知等等。

这样,您将打开所需的 Activity ,并可以使用从您的通知中获得的相关详细信息填充它,而无需使用任何其他框架。

关于android - 使用 firebase api 打开特定页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44797486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com