首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在ios 10中为不同的本地通知启动不同的视图控制器

在iOS 10中,可以通过设置不同的category和identifier来为不同的本地通知启动不同的视图控制器。

首先,在AppDelegate中注册通知的category和action,可以通过UNUserNotificationCenter来实现:

代码语言:txt
复制
import UserNotifications

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // 注册通知的category和action
    let center = UNUserNotificationCenter.current()
    center.delegate = self
    
    let category = UNNotificationCategory(identifier: "CategoryIdentifier", actions: [], intentIdentifiers: [], options: [])
    center.setNotificationCategories([category])
    
    return true
}

然后,在AppDelegate中实现UNUserNotificationCenterDelegate的方法,处理通知的点击事件:

代码语言:txt
复制
extension AppDelegate: UNUserNotificationCenterDelegate {
    // 当用户点击通知时调用
    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
        // 获取通知的category和identifier
        let category = response.notification.request.content.categoryIdentifier
        let identifier = response.notification.request.identifier
        
        if category == "CategoryIdentifier" {
            if identifier == "Notification1" {
                // 启动对应的视图控制器
                let viewController1 = ViewController1()
                // 设置为根视图控制器
                window?.rootViewController = viewController1
            } else if identifier == "Notification2" {
                let viewController2 = ViewController2()
                window?.rootViewController = viewController2
            }
        }
        
        completionHandler()
    }
}

接下来,在发送本地通知时,设置对应的category和identifier:

代码语言:txt
复制
import UserNotifications

func scheduleNotification() {
    let center = UNUserNotificationCenter.current()
    
    let content = UNMutableNotificationContent()
    content.title = "Notification Title"
    content.body = "Notification Body"
    content.categoryIdentifier = "CategoryIdentifier"
    content.sound = UNNotificationSound.default
    
    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
    
    let request = UNNotificationRequest(identifier: "Notification1", content: content, trigger: trigger)
    
    center.add(request) { (error) in
        if let error = error {
            print("Error scheduling notification: \(error.localizedDescription)")
        }
    }
}

以上代码中,通过设置不同的identifier来区分不同的本地通知,并在AppDelegate的代理方法中根据identifier来启动对应的视图控制器。注意,这里只是示例代码,实际应用中需要根据具体需求进行调整。

推荐的腾讯云相关产品:腾讯移动推送(https://cloud.tencent.com/product/tpns)

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS 本地推送概念步骤:属性:点击通知跳到指定控制器界面快捷回复功能(iOS 8以后可用), category 属性的使用方法

概念 1.推送通知有5种不同的呈现效果 在屏幕顶部显示一块横幅(显示具体内容) 在屏幕中间弹出一个UIAlertView(显示具体内容) 在锁屏界面显示一块横幅(锁屏状态下,显示具体内容) 更新app图标的数字(说明新内容的数量) 播放音效(提醒作用) 2.用户也可以决定是否要开启以下4个功能: 显示App图标数字 播放音效 锁屏显示 显示在“通知中心” 3、注意: 发送推送通知时,如果程序正在前台执行,那么推送通知就不会被呈现出来,但是微信在前台的时候也能推送消息,方法是:创建一个view,仿造系统消息通

06
  • iOS10通知框架UserNotification理解与应用

    关于通知,无论与远程Push还是本地通知,以往的iOS系统暴漏给开发者的接口都是十分有限的,开发者只能对标题和内容进行简单的定义,至于UI展示和用户交互行为相关的部分,开发者开发起来都十分困难。至于本地通知,iOS10之前采用的是UILocationNotification类,远程通知有苹果服务器进行转发,本地通知和远程通知其回调的处理都是通过AppDelegate中的几个回调方法来完成。iOS10系统中,通知功能的增强是一大优化之处,iOS10中将通知功能整合成了一个框架UserNotification,其结构十分类似于iOS8中的UIWebView向WebKit框架整合的思路。并且UserNotification相比之前的通知功能更加强大,主要表现在如下几点:

    03
    领券