我应该如何确定UIKit将打开哪个场景,以便可以在适当的窗口中设置UI?(iOS 13以上)

特拉维斯C.

背景

我有一个支持多个窗口的应用程序(iPadOS 13+),我想知道响应用户点击通知的正确方法。我想基于用户点击的通知来设置用户界面。

UNUserNotificationCenterDelegate在这样的共享实例上设置属性UNUserNotificationCenter

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    UNUserNotificationCenter.current().delegate = self
    return true
}

我符合UNUserNotificationCenterDelegate并实现以下方法。当用户与通知交互时,总是触发此方法

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
    // This gets called whenever a notification is tapped, dismissed or a custom action is performed by the user from the system Notification Center UI.
    // Should my UI setup code live here?
    completionHandler()
}

在名为“使用多个窗口定位内容”的会话中,Apple解释说,当您的应用程序支持多个窗口时,系统将使用以下属性帮助确定当用户点击通知时将向用户显示哪个窗口:

// An identifier for the content of the notification used by the system to customize the scene to be activated when tapping on a notification.
response.notification.request.content.targetContentIdentifier

最终,UIKit与响应于用户点击通知而打开哪个场景(窗口)没有约定,但是它将尽我所能打开我指定与targetContentIdentifier该通知最匹配的场景(窗口)

如果用户在我的应用终止时点击通知,那么在我的应用上调用以下功能时,SceneDelegate我将能够访问有关通知点击的信息SceneDelegate

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
    connectionOptions.notificationResponse
    // Should my UI setup code live here? 
    // I don't think so because `connectionOptions.notificationResponse` is sometimes nil and this method is only called once when the scene is being connected to a `UISceneSession`

}

如果我的应用程序未终止,则不会调用此函数。

  • 我应该如何确定UIKit将打开哪个场景,以便可以在适当的窗口中设置UI?
特拉维斯C.

似乎UNNotificationResponse有一个名为的属性targetScene,应该根据该属性确定要更新的场景:https : //developer.apple.com/documentation/usernotifications/unnotificationresponse/3255096-targetscene

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将PDF加载到Blob中以便可以上传?

来自分类Dev

如何更改键盘音量拨盘(Linux Mint,MATE)的绑定,以便可以将音量提高到100%以上?

来自分类Dev

我应该如何设置我的存储桶策略,以便可以部署到S3?

来自分类Dev

如何确定人是否在21岁以上

来自分类Dev

乐队中有13个以上的图块时,无法检索/删除/添加图块

来自分类Dev

如果我点击图像图标,图标应该是可点击的,一个弹出窗口[对话框]应该打开以上传新图像

来自分类Dev

如何设置烧瓶中可以上传的文件数

来自分类Dev

我该如何设置10个以上的环回设备?

来自分类Dev

iOS 13替代“ setAnimationCurve”

来自分类Dev

iOS的ProgressBar 13

来自分类Dev

如何确定URLLoader打开的文件已关闭,以便可以使用FileStrewam在其上写入

来自分类Dev

如何将for循环增加1以上?

来自分类Dev

如何将iOS Simulator放大100%以上?

来自分类Dev

如何在当前窗口中打开一个多条记录,而不是在odoo V13中弹出

来自分类Dev

是否可以上传BackgroundTransferRequest的结果?

来自分类Dev

是否可以上传反向工程的APK?

来自分类Dev

限制可以上传的文件数

来自分类Dev

是否可以上传反向工程的APK?

来自分类Dev

可以上传Django媒体,无法检索

来自分类Dev

如果可以放置1种以上的条件?

来自分类Dev

您可以上传文件吗

来自分类Dev

如何打开多个终端,以便可以打开多个外壳?

来自分类Dev

如何确定是否在VHDL中设置了STD_LOGIC_VECTOR中的一位以上

来自分类Dev

MongoDB - 我应该将 Messages 集合分成 1 个以上吗?

来自分类Dev

Selenium:如何忽略2个以上的异常

来自分类Dev

如何缩小图片以上传到网站?

来自分类Dev

如何合并两个以上的列?

来自分类Dev

如何.find()一个以上的数组?

来自分类Dev

如何同时传输五个以上的洪流?

Related 相关文章

  1. 1

    如何将PDF加载到Blob中以便可以上传?

  2. 2

    如何更改键盘音量拨盘(Linux Mint,MATE)的绑定,以便可以将音量提高到100%以上?

  3. 3

    我应该如何设置我的存储桶策略,以便可以部署到S3?

  4. 4

    如何确定人是否在21岁以上

  5. 5

    乐队中有13个以上的图块时,无法检索/删除/添加图块

  6. 6

    如果我点击图像图标,图标应该是可点击的,一个弹出窗口[对话框]应该打开以上传新图像

  7. 7

    如何设置烧瓶中可以上传的文件数

  8. 8

    我该如何设置10个以上的环回设备?

  9. 9

    iOS 13替代“ setAnimationCurve”

  10. 10

    iOS的ProgressBar 13

  11. 11

    如何确定URLLoader打开的文件已关闭,以便可以使用FileStrewam在其上写入

  12. 12

    如何将for循环增加1以上?

  13. 13

    如何将iOS Simulator放大100%以上?

  14. 14

    如何在当前窗口中打开一个多条记录,而不是在odoo V13中弹出

  15. 15

    是否可以上传BackgroundTransferRequest的结果?

  16. 16

    是否可以上传反向工程的APK?

  17. 17

    限制可以上传的文件数

  18. 18

    是否可以上传反向工程的APK?

  19. 19

    可以上传Django媒体,无法检索

  20. 20

    如果可以放置1种以上的条件?

  21. 21

    您可以上传文件吗

  22. 22

    如何打开多个终端,以便可以打开多个外壳?

  23. 23

    如何确定是否在VHDL中设置了STD_LOGIC_VECTOR中的一位以上

  24. 24

    MongoDB - 我应该将 Messages 集合分成 1 个以上吗?

  25. 25

    Selenium:如何忽略2个以上的异常

  26. 26

    如何缩小图片以上传到网站?

  27. 27

    如何合并两个以上的列?

  28. 28

    如何.find()一个以上的数组?

  29. 29

    如何同时传输五个以上的洪流?

热门标签

归档