从本地通知iOS打开页面

时间:2017-07-26 00:25:45

标签: c# ios xamarin.ios unusernotificationcenter

我目前使用UNUserNotificationCenter在OS10中的指定时间内发出本地通知。 我试图弄清楚当用户点击本地通知时如何在我的应用中打开特定页面。

任何人如何做到这一点我对C#中的iOS编程真的很陌生,我确信这不是一件罕见的事情。

1 个答案:

答案 0 :(得分:1)

    UNDelegate _delegate;

    public override UIWindow Window
    {
        get;
        set;
    }

    public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
    {

        UNUserNotificationCenter center = UNUserNotificationCenter.Current;
        _delegate = new UNDelegate();
        center.Delegate = _delegate;
        center.RequestAuthorization(UNAuthorizationOptions.Alert, (bool a, NSError error) => { });
        center.GetNotificationSettings((UNNotificationSettings setting) => {});
        registerNotification();
        return true; 
    }

    public void registerNotification()
    {

        UNMutableNotificationContent content = new UNMutableNotificationContent();
        content.Body = "body";
        content.Title = "title";
        content.Sound = UNNotificationSound.Default;

        NSDateComponents components = new NSDateComponents();
        components.Weekday = 2;
        components.Hour = 8;
        UNCalendarNotificationTrigger trigger = UNCalendarNotificationTrigger.CreateTrigger(components, true);

        UNNotificationRequest request = UNNotificationRequest.FromIdentifier("ABC", content, trigger);

        UNUserNotificationCenter.Current.AddNotificationRequest(request, (NSError error) => {

        });
    }


    public class UNDelegate : UNUserNotificationCenterDelegate
    {
        public override void WillPresentNotification(UNUserNotificationCenter center, UNNotification notification, Action<UNNotificationPresentationOptions> completionHandler)
        {
            completionHandler(UNNotificationPresentationOptions.Sound | UNNotificationPresentationOptions.Alert);
        }

        public override void DidReceiveNotificationResponse(UNUserNotificationCenter center, UNNotificationResponse response,  Action completionHandler)
        {
            AppDelegate app = (AppDelegate)UIApplication.SharedApplication.Delegate;
            app.Window.RootViewController.PresentViewController(new ViewController1(), true, null);
        }
    }
  

UNUserNotificationCenter.Current

获取UNUserNotificationCenter的单例实例

  

代表

从UNUserNotificationCenter

接收活动

WillPresentNotification :被调用以向前台运行的应用程序发送通知。如果要在前台显示通知,请参阅代码,它将显示声音和警报内容。

DidReceiveNotificationResponse :在用户从应用通知中选择操作后调用。当您点击通知并进入应用程序时,将调用此功能。然后打开第一篇文章中的特定页面。

  

RequestAuthorization

使用指定选项请求通知授权,并处理请求的结果。所有支持通知传递的应用程序都需要授权。您的应用首次请求授权时,系统会提醒用户并有机会拒绝或授予该授权。

  

GetNotificationSettings

返回应用的通知设置对象,在返回之前对其进行处理。

  

UNMutableNotificationContent

系统生成的对象,包含通知的各个部分,包括文本,声音,徽章和启动图像,附件等。它显示在 通知。

  

UNCalendarNotificationTrigger

在指定的日期或时间触发一次或多次发送通知。它将在星期一的8:00在我的代码中发送通知。

  

UNNotificationRequest

包含开发人员从UNUserNotificationCenter请求的通知的内容和触发器。

  

AddNotificationRequest

使用指定的completionHandler添加请求指定的本地通知。

我还没有提到很多功能和课程。 e.g,

UNNotificationAttachment(通过通知显示的音频,视频或图片。) UNNotificationAction(可以响应通知执行的操作。) UNNotificationCategory(实现包含一类通知的一组操作和选项。)

但您的要求可以满足我的代码。 更多信息

UNUserNotificationCenter in xamarin

UNUserNotificationCenter in app doc