我正在使用下面的代码向设备发送推送通知。
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”
<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
属性。
请检查Firebase文档的这一部分。
此外,当您定义click_action
属性时,您还需要在要启动的活动的
中有一个相应的
属性。
这段视频用相当详细的方式解释了它。
但是,请注意,如果从Firebase控制台发送通知,则不能设置click__action
属性。只有当您从自己的管理服务器或使用Firebase云功能发送通知时,才能这样做。
最后,在启动的活动中,您可以使用data属性设置其他data
(也显示在上面链接的同一文档中)。当您通过单击通知启动应用程序时,您可以使用getIntent()
获取通知数据。请查看此答案以了解更多关于如何做到这一点的详细信息。
问题更新后编辑:-
与其将
放入mainactivity
中,不如将筛选器放入要在单击通知时打开的活动的
标记中。一个例子如下:-
<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>
现在指定的活动打开了,您可以使用getIntent()
从通知的数据
部分获取信息。
例如,如果通知负载具有以下结构,
payload = {
notification: {
title: `You ordered a new product`,
click_action : 'HANDLE_NOTIFICATION',
},
data : {
product_id : 'ABC98292',
type : `Clothes`,
product_name : 'Cotton spring shirt'
}
};
然后,您可以使用getIntent().getStringsExtra(“PRODUCT_ID”)
等从通知中获取PRODUCT_ID
。
这样,您将打开所需的活动,并且可以用从通知中获得的相关细节填充它,而不需要使用任何其他框架。
我正在尝试在https页面上运行负载测试。然而,即使是在一个简单的GET请求上,我也会不断收到一个错误。例如,我试着打开https://www.google.com,效果很好。我试图捕获请求,但似乎没有发送任何内容。另外,当我尝试用jmeter证书记录https页面时,我也会收到相同的错误。 在http上打开同一页效果很好。我试图打开的页面是一个错误。网页。有人知道怎么回事吗?我用头在墙上跺了很久
本文向大家介绍运用Python的webbrowser实现定时打开特定网页,包括了运用Python的webbrowser实现定时打开特定网页的使用技巧和注意事项,需要的朋友参考一下 运用webbrowser库中的一个函数实现自动打开浏览器: 运用time库中的函数获取当前时间以及实现定时功能: 完整代码: 以上这篇运用Python的webbrowser实现定时打开特定网页就是小编分享给大家的全部内容
我在Windows 10上使用Vim80。使用Netrw命令,默认情况下它会打开我的路径。我想在我的计算机上打开特定的磁盘驱动器,如使用netrw的。我在Stack Overflow上搜索了类似的问题,并找到了使用或的答案,但它不会更改默认目录。什么是netrw vim命令,使我能够更改我正在使用的驱动器?
我正在使用Asgard CMS,这是一个基于Laravel 5.1构建的模块化CMS,并且在我创建的特定模块中面临上述问题。 整个站点都有很多post请求和重定向,这很好,但是当涉及到配置文件模块时,我遇到了这个问题。 我将一个编辑请求发布到一个路由,在完成一些工作后,我重定向回路由。当我重定向时,它会显示一个空白页面,上面写着“重定向到”http://www...“首先写入,然后在2-3秒后重定
我正在尝试使用gallery打开特定文件夹,并参考了gallery中的其他类似问题open image form Build\u,并实现了以下代码,但仍然失败并报告错误(如以下logcat所示): 选择特定文件夹: 活动结果: 在Logcat中,它报告android。所容纳之物ActivityNotFoundException:找不到可处理意图的活动{act=android.Intent.acti
我有一个如下数组: 我想做的是找到重复的值,并打印它们。 所以我这样做的方法是转换到,然后转换到,并在上使用。 然后,我使用一个循环通过它,并使用。 这当然会把它们全部打印出来,即使计数是一。 我想加入