华为。使用 Push Kit 从通知中获取 data(title, body, sentTime)。 Xamarin 表单
Posted
技术标签:
【中文标题】华为。使用 Push Kit 从通知中获取 data(title, body, sentTime)。 Xamarin 表单【英文标题】:Huawei. Obtain data(title, body, sentTime) from notification by using Push Kit. Xamarin Forms 【发布时间】:2022-01-18 17:15:42 【问题描述】:我正在尝试从通知中获取数据,当我的应用程序关闭并且应用程序只是在后台时。我收到通知,点击它,然后在 MainActivity(来自 android 项目)中我想获取数据。 我可以在我的应用程序打开时通过 HmsMessageService 和 OnMessageReceived 执行此操作,没有问题。但我找不到例子,当应用程序关闭时如何做到这一点。任何帮助,请。 Json中有我的通知:
var jObject = new
message = new
notification = new
title = titleNot,
body = bodyNot
,
android = new
notification = new
foreground_show = false,
click_action = new
type = 3
,
token = new[] token
;
【问题讨论】:
【参考方案1】:应用关闭时,可通过自定义click_action
获取参数。
在您的应用服务器上的消息正文中设置intent。
"message":
"notification":
"title": "message title",
"body": "message body"
,
"android":
"notification":
"click_action":
"type": 1,
"intent": "intent://com.huawei.xahmspushdemo/deeplink?#Intent;scheme=pushscheme;launchFlags=0x4000000;i.age=180;S.name=abc;end"
,
"token": [
"pushtoken1"
]
这是document。
【讨论】:
我希望这应该是一种更简单的方法。不改变消息类型。 Google Firebase 允许这样做,不幸的是 Hms 不允许。 在我看来,在这种模式下,消息类型不会改变。只是添加了intent参数,参数是通过intent传递的。【参考方案2】:正如 Np0v0 所说,你可以使用 click_action 来获取数据。还有另一种实现目标的方法。
-
在应用的 AndroidManifest.xml 文件中注册要启动的 Activity 类。
3.使用自定义活动类接收数据。
更多详情请参考https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides/andorid-basic-clickaction-0000001087554076#EN-US_TOPIC_0000001087554076__li7205195217309
【讨论】:
【参考方案3】:在不更改“click_action
类型”的情况下解决了问题。只需在 main Activity 中重写 OnNewIntent
() 方法,并添加带有一些逻辑的“GetIntentData
”。
private void GetIntentData(Bundle bNotification)
if (bNotification != null)
try
if (bNotification.ContainsKey(TITLE_KEY) && bNotification.ContainsKey(BODY_KEY))
\\...
catch
protected override void OnNewIntent(Intent intent)
base.OnNewIntent(intent);
GetIntentData(intent?.Extras);
在OnCreate
() 中我创建了捆绑包,如果它不为空,我会加载应用程序:
Bundle bNotification = Intent.Extras;
if (bNotification == null || bNotification.IsEmpty)
LoadApplication(new App(...));
else
LoadApplication(new App(true, ...));
GetIntentData(bNotification);
https://developer.huawei.com/consumer/en/doc/development/HMS-Plugin-Guides/xamarin-customizingactions-0000001055648851
【讨论】:
以上是关于华为。使用 Push Kit 从通知中获取 data(title, body, sentTime)。 Xamarin 表单的主要内容,如果未能解决你的问题,请参考以下文章
华为 Push Kit 错误:907135701:范围列表为空
在 HMS Push Kit 和 React Native 中收到通知时,如何获取应用自动处理的通知?
我的手机调用HMS Push Kit服务端API后收不到任何消息。 SDK版本为4.0.3.300
在 android studio 中无法获取华为 Map Kit 的 com.huawei.hms.location.LocationServices