gpt4 book ai didi

ios - 在 Xamarin iOS 中的远程通知 'Default User Action' 上推送 View Controller

转载 作者:行者123 更新时间:2023-12-01 18:04:24 29 4
gpt4 key购买 nike

我已经设置了远程通知并向有效负载添加了一些自定义键,如果用户点击通知并想要阅读有关该主题的更多信息,它们将提供在主页上推送特定详细信息 ViewController 的选项。

例如:linkType: "services"linkPost: "main"当应用程序进入前台时,会告诉我的应用程序推送主服务页面。

我可以成功访问变量中的键和值topicValue , linkType , 和 linkPost但是当用户点击通知时,我无法调试代码所采用的路径,因此我知道何时何地推送正确的 ViewController。我正在使用 Xamarin.Essentials 包,所以我可以 GetSet这些键值对。我可以在整个应用程序的任何地方访问它们。

public class MyNotificationCenterDelegate : UNUserNotificationCenterDelegate
{
public override void DidReceiveNotificationResponse(UNUserNotificationCenter center, UNNotificationResponse response, Action completionHandler)
{
if (response.IsDefaultAction)
{
var userInfo = response.Notification.Request.Content.UserInfo;

string topicValue = userInfo.ObjectForKey(new NSString("topic")).ToString();
string linkType = userInfo.ObjectForKey(new NSString("linktype")).ToString();
string linkPost = userInfo.ObjectForKey(new NSString("linkpage")).ToString();
Preferences.Set("linkType", linkType);
Preferences.Set("linkPost", linkPost);

我最初尝试使用 launchOptions FinishedLaunching 中的参数AppDelegate 中的方法,但是当我设置断点时,当我点击远程通知时它们似乎没有命中。在 Xamarin.iOS 中完成此任务的任何帮助将不胜感激。

最佳答案

两件事(后台状态或非事件状态)

  • 如果您的应用在后台不可用并且您使用通知,那么您应该使用 DidFinishLaunching对于这种情况,您应该设置来自通知的 key 。您将从launchOptions 中获得该 key 。
    比较 viewWillAppear 中的那个键的 HomeViewController并把 RedirectScreen如果键匹配的代码。

    例如:- linkType: "services"
  • 如果您的应用程序在后台可用并且收到通知,则 DidReceiveNotificationResponse 调用,您可以重定向应用程序中的任何屏幕。
    首先,您应该获取 topMostViewController然后使用此 Controller 重定向到任何屏幕。

  • 例如:- 获取 topMostViewController
        public static UIViewController GetTopViewController()
    {
    var window = UIApplication.SharedApplication.KeyWindow;
    var vc = window.RootViewController;
    while (vc.PresentedViewController != null)
    vc = vc.PresentedViewController;

    if (vc is UINavigationController navController)
    vc = navController.ViewControllers.Last();

    return vc;
    }

    关于ios - 在 Xamarin iOS 中的远程通知 'Default User Action' 上推送 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54774802/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com