如何构建 FCM 推送通知以在 Flutter 的默认系统 Web 浏览器应用程序中打开指定的 URL (Android & iOS)
How to construct FCM push notification to open specified URL in default system web browser app in Flutter (Android & iOS)
我有一个 Flutter 应用程序(Android 和 iOS),它可以处理 Android 深度链接和应用程序链接,以及 iOS 自定义 URL 方案& 通用链接。
所以 URLs...
company://service/items/{item-id}
https://service.company.com/items/{item-id}
...都打开 {item-id}
的“项目详细信息”页面,如预期和期望的那样。
此应用程序的后端服务器发送 FCM 推送通知,通知用户 {item-id}
。
发生更改时
现在,点击推送通知只会启动应用程序的主页。
我想知道是否有可能以这样一种方式构建 FCM 消息...它告诉设备在默认系统 Web 浏览器中打开 URL,这将触发现有的深层我有链接功能吗?
我认为这很可能是可行的,因为我猜这将是营销材料或需要在网站上而不是在应用程序中完成的操作的有用用例?
但与此同时,我可以想象,除了 FCM 消息接收器之外,可能无法触发对来自另一个应用程序的推送通知的处理?
我在 server/FCM 广播阶段尝试处理这个问题的理由是,如果可能的话,我想重新使用现有的功能性深度链接功能,并尽可能少地改变公共 flutter 层,并尽可能避免使用本机代码。
我正在努力 Android:
{
"notification": {
"title": "Whosebug title",
"body": "Click on it to see what happens!",
"click_action": "android.intent.action.VIEW",
"data": "https://service.company.com/items/{item-id}"
},
"data": {
"open_url": "https://service.company.com/items/{item-id}"
},
"android": {
"notification": {
"click_action": "android.intent.action.VIEW",
"data": "https://service.company.com/items/{item-id}"
}
},
"to": "..."
}
...但运气不好。
我错过了什么吗?还是找错树了?
欢迎提出任何意见和建议:-)
所以我无法找到一种方法来做我想做的事。但是,我可以像这样直接在 flutter 中处理通知点击事件:
_fcm.configure(
onMessage: (Map<String, dynamic> message) async => _showMessageHandler,
onLaunch: (Map<String, dynamic> message) async => _openMessageHandler,
onResume: (Map<String, dynamic> message) async => _openMessageHandler,
);
只要我以正确的方式发送通知 - 如下所示:
{
"notification": {
"title": "Title",
"body": "Body"
},
"priority": "high",
"data": {
"click_action": "FLUTTER_NOTIFICATION_CLICK",
"open_url": "https://service.company.com/items/{item-id}"
},
"to": "..."
}
我有一个 Flutter 应用程序(Android 和 iOS),它可以处理 Android 深度链接和应用程序链接,以及 iOS 自定义 URL 方案& 通用链接。
所以 URLs...
company://service/items/{item-id}
https://service.company.com/items/{item-id}
...都打开 {item-id}
的“项目详细信息”页面,如预期和期望的那样。
此应用程序的后端服务器发送 FCM 推送通知,通知用户 {item-id}
。
现在,点击推送通知只会启动应用程序的主页。
我想知道是否有可能以这样一种方式构建 FCM 消息...它告诉设备在默认系统 Web 浏览器中打开 URL,这将触发现有的深层我有链接功能吗?
我认为这很可能是可行的,因为我猜这将是营销材料或需要在网站上而不是在应用程序中完成的操作的有用用例?
但与此同时,我可以想象,除了 FCM 消息接收器之外,可能无法触发对来自另一个应用程序的推送通知的处理?
我在 server/FCM 广播阶段尝试处理这个问题的理由是,如果可能的话,我想重新使用现有的功能性深度链接功能,并尽可能少地改变公共 flutter 层,并尽可能避免使用本机代码。
我正在努力 Android:
{
"notification": {
"title": "Whosebug title",
"body": "Click on it to see what happens!",
"click_action": "android.intent.action.VIEW",
"data": "https://service.company.com/items/{item-id}"
},
"data": {
"open_url": "https://service.company.com/items/{item-id}"
},
"android": {
"notification": {
"click_action": "android.intent.action.VIEW",
"data": "https://service.company.com/items/{item-id}"
}
},
"to": "..."
}
...但运气不好。
我错过了什么吗?还是找错树了?
欢迎提出任何意见和建议:-)
所以我无法找到一种方法来做我想做的事。但是,我可以像这样直接在 flutter 中处理通知点击事件:
_fcm.configure(
onMessage: (Map<String, dynamic> message) async => _showMessageHandler,
onLaunch: (Map<String, dynamic> message) async => _openMessageHandler,
onResume: (Map<String, dynamic> message) async => _openMessageHandler,
);
只要我以正确的方式发送通知 - 如下所示:
{
"notification": {
"title": "Title",
"body": "Body"
},
"priority": "high",
"data": {
"click_action": "FLUTTER_NOTIFICATION_CLICK",
"open_url": "https://service.company.com/items/{item-id}"
},
"to": "..."
}