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

在没有StoryBoard的情况下点击通知时访问特定的ViewController (以编程方式)

在没有Storyboard的情况下,可以通过编程方式实现在点击通知时访问特定的ViewController。以下是一种实现方式:

  1. 创建一个自定义的通知处理类,继承自UNUserNotificationCenterDelegate,并实现其中的didReceive(_:withCompletionHandler:)方法。
代码语言:txt
复制
import UserNotifications

class NotificationHandler: NSObject, UNUserNotificationCenterDelegate {
    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
        // 获取通知的标识符
        let identifier = response.notification.request.identifier
        
        // 根据标识符判断需要打开的ViewController
        if identifier == "NotificationIdentifier" {
            let viewController = SpecificViewController()
            
            // 在这里可以进行一些其他的处理,例如传递参数等
            
            // 获取当前的window
            guard let window = UIApplication.shared.windows.first else {
                return
            }
            
            // 设置ViewController为rootViewController
            window.rootViewController = viewController
            window.makeKeyAndVisible()
        }
        
        // 完成处理
        completionHandler()
    }
}
  1. 在AppDelegate中注册通知处理类,并设置UNUserNotificationCenter的delegate为该类。
代码语言:txt
复制
import UIKit
import UserNotifications

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?
    let notificationHandler = NotificationHandler()

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // 注册通知处理类
        UNUserNotificationCenter.current().delegate = notificationHandler
        
        // 请求用户授权通知
        UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in
            // 处理授权结果
        }
        
        // 其他初始化操作
        
        return true
    }
    
    // 其他AppDelegate方法
}
  1. 在发送通知的地方,使用UNUserNotificationCenter来发送通知,并设置通知的identifier为特定的值。
代码语言:txt
复制
import UserNotifications

func sendNotification() {
    let content = UNMutableNotificationContent()
    content.title = "通知标题"
    content.body = "通知内容"
    content.sound = UNNotificationSound.default
    content.badge = 1
    
    // 设置通知的identifier为特定的值
    let request = UNNotificationRequest(identifier: "NotificationIdentifier", content: content, trigger: nil)
    
    // 发送通知
    UNUserNotificationCenter.current().add(request) { (error) in
        // 处理发送结果
    }
}

以上代码示例中,通过自定义的通知处理类,在点击通知时判断通知的标识符,如果是特定的值,则创建并设置特定的ViewController为rootViewController,从而实现在点击通知时访问特定的ViewController。

腾讯云相关产品和产品介绍链接地址:

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

相关·内容

iOS10通知框架UserNotification理解与应用

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

03

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

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

06
领券