首页
学习
活动
专区
工具
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)

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

相关·内容

UIViewController生命周期

一、视图控制器 UIViewController采用懒加载方式,也就是说第一次访问到view属性时才会加载或创建它。...由于视图视图控制器管理,所以讨论视图加载方式时,主要讨论视图控制器加载方式。 通过Storyboard加载:这是苹果推荐方式。...4、viewWillLayoutSubviews 即将开始子视图位置布局 5、ViewDidLayoutSubviews 用于通知视图位置布局已经完成 6、ViewDidAppear 当viewWillAppear...初次启动iOS_didFinishLaunchingWithOptions iOS_applicationDidBecomeActive 按下home键: iOS_applicationWillResignActive...=vc]; 4、KeyWindow 当前app可以打开多个window 系统状态栏其实就是一个window ,程序启动时候创建默认window ,弹出键盘也是一个window ,alterView

1.9K10

iOS 9人机界面指南(三):iOS 技术 (中) - 腾讯ISUX

本地通知(local notification)由应用安排待发送,最终通过iOS发送到同一设备中,无论该应用当前是否正在后台运行。...注意:当用户点击动作按钮时,他们会得到一个如上图动作视图控制器。想要了解更多关于这个视图控制器内容,请参见Activity View Controller。...考虑在你应用中用户提供一种简便方式来撰写邮件。用户有可能会启用分享扩展以便能在任何地方都可以发送内容。但是你也可以使用系统提供撰写视图控制器来呈现给用户,他们可以在其中进行编辑操作。...使用以用户中心术语并且进行本地化。 在易于理解情况下越短越好。尽可能避免超过一句话。 使用句式大小写(sentence-style capitalization)....想要学习如何在应用中加入Quick Look文件预览功能,请参阅Document Interaction Programming Topics for iOS.

3.3K50
  • iOS 9人机界面指南(四):UI元素(上) - 腾讯ISUX

    请注意,iOS本身提供了若干内置服务,打印,转发到Twitter,发送信息和Airplay等等,你不需要再额外这些内置任务创建活动。...每一个活动设计清晰简练文字标题。标题将会出现在活动菜单图标的下方。一般来说短标题效果最好,因为它在屏幕上显示效果更好并且更容易本地化。...活动视图控制器: 显示了让用户可以针对当前内容执行操作一系列可配置服务 根据所处场景不同,可能出现在操作列表或浮出层中 使用活动视图控制器用户提供一系列针对当前内容服务。...下图是iOS模拟器中翻页样式: ? API注释 想要了解如何在代码中定义图片视图,请参考Page View Controllers. 页面视图控制器: 带滚动条页面视图控制器没有默认外观。...对分视图控制器本身负责展示这些子视图控制器与管理不同屏幕方向下对分视图转场效果。

    10.1K51

    用这些 iOS 技巧让你 APP 性能更佳

    Apple 所述,应将启动页设计与应用第一个页面相同: 「设计一个与应用程序首页几乎相同启动页。...译者注:文段中没有 Xcode,下文中提及 Xcode 新建项目 为了让你应用感觉更快,你可以将启动页设计与将向用户显示第一个页面(视图控制器)类似。...Apple 的人机界面指南还建议我们不要在启动页上包含文本,因为启动页是静态,应用程序不能将文本本地化以适应不同语言。...如果视图具有透明度(即 alpha 低于 1.0),那么 iOS 将需要做些额外工作来混合视图层次结构中不同视图层以计算出哪些内容需要展示。...(查看大图) 默认情况下,视图控制器生命周期方法( viewDidLoad)和 IBOutlet 相关方法是在主线程上执行。

    3.2K30

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

    概念 1.推送通知有5种不同呈现效果 在屏幕顶部显示一块横幅(显示具体内容) 在屏幕中间弹出一个UIAlertView(显示具体内容) 在锁屏界面显示一块横幅(锁屏状态下,显示具体内容) 更新app图标的数字...(将本地通知加入本地通知调度池,iOS 7 到这一步完毕,不需要授权) [[UIApplication sharedApplication] scheduleLocalNotification:localNotifi..., nonatomic,copy) NSString *alertTitle NS_AVAILABLE_IOS(8_2); 12、设置通知推送携带参数,一般用于点击通知打开指定控制器页面 @property...,程序启动后获取通知对象,如果是首次启动还没有发送通知,那第一次通知对象空,没必要去处理通知跳转到指定页面) if (launchOptions[UIApplicationLaunchOptionsLocalNotificationKey...QQ功能:触发通知后,点击下拉出现,点击“好”两个字当做消息回复回去 ?

    2.6K60

    ViewController及View生命周期1. 起因2. Controller生命周期3. View生命周期4. 内存警告

    ,与上面被其它视图控制器显示对应,信息录入完成,返回之前视图控制器)。...系统也同样提供了四个方法用来管理四个不同时期内容,有一点需要注意是这四个方法都会执行,只是添加或者移除视图不同。...didMoveToSuperview:会通知相关视图他们上级视图已经变化。添加和移除都会调用,所以要判断 superView在不在。...willMoveToWindow:在视图移动前发出回调。 willRemoveToSubview:回调通知视图视图即将被删除 4. 内存警告 首先要判断一下,当前view有没有被显示。...实际开发中为了写少点,都会写在基类控制器中。 官方说,iOS 6.0以后系统就不会自动清理,需要手动清理。

    1.4K30

    iOS视频播放基本方法

    本文总结了iOS中最常见视频播放方法,不同方法都各具特点,我希望能够总结它们不同,方便在开发中选择合适技术方案。...,使用它播放视频需要将其自带视频View添加到视图控制器View上才能显示视频,使用步骤如下: 第一步:引用MediaPlayer框架,声明视图控制器属性PlayerController #import...play]; //第六步:在退出界面的时候,关闭播放器,移除通知 - (void)dealloc{ //当前视图控制器pop之后并不会关闭播放,需要手动关闭 [self.playerController...使用这种方式播放优点在于可以指定播放界面的原始尺寸大小,但是值得注意是AVPlayerViewController必须被当前视图控制器所持有,以防止被当做局部变量被释放。...为了满足这一条件,我们可以将AVPlayerViewController作为属性,也可以使用addChildViewController方法将其作为当前视图控制器视图控制器,示例代码如下: //步骤

    4.4K20

    iOS程序猿如何快速掌握 PHP,化身全栈攻城狮?

    下载完成后,双击安装.安装成功后,选择 Mange Servers-->Start All启动本地服务器.启动成功后,在浏览器中输入 http://localhost,就可以看到一个默认PHP页面....数据模型: id:42 name:iOS122 age:25 viewController=后面跟是你你表示你视图控制器, model是一个字典,用于存储数据模型,支持输入多个键值对.id,name...JSON格式数据显示作一实现;C,即Controller控制器,也就是我们常说视图控制器,下面会具体讨论如何在PHP中定义视图控制器....Model,允许且只允许用于通过URL来定义某个控制器Model; PHP 是一本弱类型语言,所以不必专门某种控制器指定某种类型Model....age:25 浏览器中会被自动解析一个列表.对应HTML代码如下: id:42 name:iOS122<

    1.8K71

    iOS视频功能模块开发 原

    iOS视频功能模块开发 一、使用MPMoviePlayerController进行视频播放         MPMoviePlayerController是iOS中进行视频播放开发一个控制类,里面涵盖了视频播放中大部分需求功能...1、初始化方法         MPMoviePlayerController可以播放网络视频,也可以播放本地视频,通过不同URL来进行初始化,例如本地视频初始化如下: //视频文件路径     NSString...添加在我们需要UI视图上,这个控制器只提供控制相关功能,外部UI并没有为我们提供好。...二、MPMoviePlayerViewController视频视图控制器         如果你很熟悉MVC,你可能会觉得MPMoviePlayerController设计模式非常蹩脚,强行要求你将控制器视图分离出来加在另外...进行简单初始化后,对其中MPMoviePlayerController进行其他配置,之后通过模态跳转切换控制器即可。

    1.1K70

    最新iOS设计规范六|10大交互规范(User Interaction)

    避免与系统屏幕边缘手势冲突(边缘保护)。根据设备不同,屏幕边缘手势可提供对主屏幕和应用程序切换器、通知中心、控制中心和Dock访问。...旋转(Rotate):旋转图像或视图 摇晃(Shake):撤销或重做 六、3D 触控(3D Touch ) 3D触摸可以说是触摸交互方式提供了另一个维度交互,在支持3D触摸设备上,用户可以通过对屏幕施加不同程度压力来唤醒不同功能...设计出色音频体验 必要时自动调整不同层级音量水平,但不是整体音量。达到更好混合音效,你APP可以单独调整不同层级音频间相对音量以实现多种音频混合。...当被放置内容需要时间传输时显示进度。 当被放置内容会启动一个进程时,要提供反馈。 被放置失败时通知用户。 对放置文本应用适当样式。...确定游戏控制器要求。 在启动时确认所需游戏控制器连接。 帮助人们了解在您应用程序中使用游戏控制器优势。 测试所有受支持输入设备。

    4.2K30

    iOS初步集成极光推送后你还要做这些事

    ● 未启动如何处理? ● 当app在前台收到消息如何跳转到指定页面? ● 在后台收到系统通知,点击通知栏又如何跳转指定页面? ● 未启动时点击通知栏又如何跳转指定页面?...○未启动时受到消息如何处理?如何跳转 这种情况是最不容易找到,因为当你应用未启动,点击了通知栏,它没有调用任何极光代理,这时候需要我们去启动函数进行判断。...,来判断是否是收到通知启动。...通知一般不是广播式,有时候需要针对不同用户群体或者个体发送通知,例如优惠券等。极光提供了几种区分用户方法,在Web中我们可以看到 ?...○ 怎么在app内部开启、关闭通知? 一般都在app设置中有一个switch开关。来开启关闭通知,代码很简单,直接贴上来。有一点需要注意,就是这个开关状态需要存到本地,有高要求存服务器。

    2.8K50

    iOS 9人机界面指南(三):iOS 技术 (上)

    可以考虑在本地缓存信息,以便当有更新时就可显示最近信息。人们只希望在今天视图中花很少时间,如果部件使用内存不当,iOS就可能会终止它 在适当情况下,让人们点击你今天部件来打开你应用。...注意: 在动作视图控制器中,iOS只会显示支持当前内容类型动作扩展。例如,当用户当前内容是视频时,iOS就不会显示支持文本动作扩展。 尽可能在分享扩展中使用系统提供UI。...注意: 文档提供者扩展由两个不同部分组成:文档采集视图控制器扩展和文件提供者扩展。文档采集视图控制器扩展包括了你自定义UI,文件提供者扩展实现对文件访问。...iOS会显示扩展自定义UI,而自定义UI又包含在文档采集视图控制器中基于导航栏界面之中。所以,在内建导航栏之下再显示第二个导航栏会使用户感到困惑,并且还会占据原本你内容区域。...适度使用本地通知。应用可以在特定时间发送本地通知,无论应用是在暂停中还是运行中亦或是根本就没有运行。为了达到最好用户体验,应避免用过多通知来骚扰人们,并遵循通知中创建通知内容指南。

    1.7K60

    跟着官方文档学习3D Touch

    在app内,人们可以使用不同压力来得到不同内容查看效果:1.预览视图 2.打开一个单独视图控制器界面查看视图,进而进行其他交互。...另一类是在app内,稍用力按压某个视图,可以预览除去该视图额外内容,再稍加用力按压屏幕,可以弹出另一个控制器界面,这个控制器界面就是点击这个被按压视图将会跳转控制器。...Snip20160418_9.png 启动并进入应用程序,在应用程序内可以响应用户不同按压力度,随着用户按压力度增大,程序会一次进入三个交互阶段: 1.表明内容可以被预览 2.展示预览视图-也就是我们所熟知...*作用:返回一个配置好以供预览视图控制器。 *需要操作:把源视图坐标系上点转换为当前控制器视图点。 *返回一个控制器。...详细说明: 当iOS界面环境发生变化时,系统会调用这个代理方法。根据app实际需要,可以在视图控制器或者视图中实现这个代理方法,以响应一些改变。

    6.4K50

    iOS 9人机界面指南(一)上篇:UI设计基础 - 腾讯ISUX

    视图所有类型有:控件(比如按钮和滑块)、内容视图(比如集合视图和表格视图),以及临时视图警告提示和动作菜单)。 要在应用中管理一组或者一系列视图,通常需要使用视图控制器。...它能协调视图内容显示,实现与用户交互功能并能在不同屏幕内容之间切换。比如,“设置”使用了一个导航控制器来展示其视图层级。...这里有一个关于视图视图控制器如何结合并呈现iOS应用UI例子,如图。 ? 尽管开发者认为真正起到作用视图视图控制器,但一般用户感知到iOS应用是不同屏幕内容集合。...你可以使用一个特征集合让你视图视图控制器响应显示环境变化。 iOS定义了两个尺寸类别(size class),常规(regular)和压缩(compact)。...若有需要,亦可先参考先前已翻译iOS7 UI Elements章节:上,下。) 尊重用户关于接收通知偏好设置。

    1.9K41

    View编程指南(二)

    苹果官方文档View Programming Guide for iOS 三、Windows 每个iOS应用程序至少需要一个window- 一个UIWindow类实例 - 有些可能包含多个window...但是,您可以使用应用程序window对象来执行几个与应用程序相关任务: 使用window对象将点和矩形转换为window本地坐标系或从window本地坐标系进行转换。...Windows会在显示或隐藏通知或者接受或退出密钥状态时生成通知。 您可以使用这些通知在应用程序其他部分执行操作。...注意:如果windowrootview由容器view控制器选项卡栏控制器,导航控制器或分割view控制器)提供,则不需要自行设置view初始大小。...虽然你可以自己分配window到这些级别,但是当你使用特定接口时,系统通常会为你做这些。 例如,当您显示或隐藏状态栏或显示警报视图时,系统会自动创建所需window来显示这些项目。

    81410

    iOS 页面渲染 - 流程

    不同显示器VSync信号频率也会不同 iPhone 60HZ,iPad Pro 120HZ,以及 PC 显示器 144HZ 等等。...这个Observer名字_ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv,其实 APP 启动之后还会有其他Observer...当一个触摸事件到来时,RunLoop 被唤醒,App 中代码会执行一些操作,比如创建和调整视图层级、设置 UIView frame、修改 CALayer 透明度、视图添加一个动画;这些操作最终都会被...iOS 图形服务接收到 VSync 信号后,会通过 IPC 通知到 对应 App 内。...Render Server 渲染进程会在启动后注册对应 CFRunLoopSource 通过 mach_port 接收传过来VSync信号通知来驱动图层渲染,进而提交至 GPU。

    1.9K20
    领券