华为。使用 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

华为 Health Kit API 未显示蛋白质值

上新啦,KIT