如何处理 Xamarin Forms 中推送通知中的点击事件?

Posted

技术标签:

【中文标题】如何处理 Xamarin Forms 中推送通知中的点击事件?【英文标题】:How to handle the tap events in Push Notifications in Xamarin Forms? 【发布时间】:2016-10-13 09:00:56 【问题描述】:

我创建了 Xamarin Forms PCL 项目。我已经集成了 OneSignal 推送通知,这些通知即将到来并显示良好。我想在有人点击通知时处理该事件,以便我可以显示与该通知对应的活动。我还添加了 Xam.Plugin.Pushnotifications 但我什至无法处理水龙头。消息来了,我可以捕获消息并使用它,但我想处理通知上的点击事件。我应该如何在 PCL 中做到这一点?

【问题讨论】:

【参考方案1】:

Xamarin OneSignal SDK 不支持 PCL 项目,因为它需要特定于平台的类。您需要将代码添加到共享项目中,如Xamarin OneSignal setup guide 所示。

使用以下代码处理通知打开事件。

 // Notification Opened Delegate
 OneSignal.NotificationOpened exampleNotificationOpenedDelegate = delegate (OSNotificationOpenedResult result)
 
    try
    
       System.Console.WriteLine("OneSignal Notification opened:\nMessage: 0", result.notification.payload.body);
       Dictionary<string, object> additionalData = result.notification.payload.additionalData;
       if (additionalData.Count > 0)
          System.Console.WriteLine("additionalData: 0", additionalData);


       List<Dictionary<string, object>> actionButtons = result.notification.payload.actionButtons;
       if (actionButtons.Count > 0)
          System.Console.WriteLine("actionButtons: 0", actionButtons);
    
    catch (System.Exception e)
    
       System.Console.WriteLine(e.StackTrace);
    
 ;

OneSignal.StartInit("YOUR_APP_ID", "YOUR_GOOGLE_PROJECT_NUMBER")
        .HandleNotificationOpened(exampleNotificationOpenedDelegate)
        .EndInit();

【讨论】:

你说得对,我需要做平台特定的工作。谢谢:) 他们现在支持 PCL。指南已更新:documentation.onesignal.com/docs/… 请建议在ios中在哪里编写此代码..我正在AppDelegate的完成启动方法中处理它,但是当我点击通知时没有任何反应。在我在 MainActivity 中编写代码的 android 项目中一切正常。伙计们请指导我的ios。

以上是关于如何处理 Xamarin Forms 中推送通知中的点击事件?的主要内容,如果未能解决你的问题,请参考以下文章

我们如何处理 Xamarin Forms Picker 的完成按钮单击事件?

当应用程序不在后台运行时如何处理推送通知

如何处理点击推送通知ios

如何处理不同语言的 iOS 推送通知

当我的应用程序激活时如何处理推送通知?

PhoneGap/Ionic 如何处理来自 Parse 的推送通知?