问题总结
我正在编写一个iOS应用程序,该应用程序发送提醒通知,以使用户可以通过其x-callback-url运行其他应用程序。如果该应用程序位于前景或背景中,那么我可以正常运行,但是在关闭我的应用程序后无法正常工作。
当我的应用程序关闭时,通知也会正确发送,用户可以将其关闭,也可以选择自定义操作来通过其x-callback-url启动另一个应用程序。当用户对通知执行任何操作时,我的应用程序启动正常。
直接从关闭状态启动应用程序时,什么不起作用是触发启动x-callback-url以启动“快捷方式”应用程序。
代码在这里
这是我的AppDelegate中与通知相关的代码:
InstanceCount Line
------------- ----
4 0
3 1
3 1
3 0
3 1
2 1
2 0
1 0
1 1
1 0
这是我的主表视图控制器中的代码,它是接收通知的委托:
// Handle what we need to after the initial application load
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Setup our custom notification options and notification category.
// Note that The table view controller will register to handle the actual notification actions.
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) {(granted, Error) in
if !granted {
os_log("AppDelegate: Notification authorization NOT granted.", log: OSLog.default, type: .info)
} else {
os_log("AppDelegate: Notification authorization granted.", log: OSLog.default, type: .info)
// Define our custom notification actions
let runAction = UNNotificationAction(identifier: "RUN_SHORTCUT", title: "Run Shortcut", options: [.foreground])
let snoozeAction = UNNotificationAction(identifier: "SNOOZE", title: "Snooze 10 Minutes", options: [])
let skipAction = UNNotificationAction(identifier: "SKIP_SHORTCUT", title: "Skip Shortcut", options: [])
// Define our custom notification categories
let shortcutCategory =
UNNotificationCategory(identifier: "SHORTCUT_REMINDER", actions: [snoozeAction, runAction, skipAction], intentIdentifiers: [], options: .customDismissAction)
let noshortcutCategory =
UNNotificationCategory(identifier: "NO_SHORTCUT_REMINDER", actions: [snoozeAction], intentIdentifiers: [], options: .customDismissAction)
// Register the nofication category and actions with iOS
let notificationCenter = UNUserNotificationCenter.current()
notificationCenter.setNotificationCategories([shortcutCategory, noshortcutCategory])
os_log("AppDelegate: Set our custom notification categories and actions.", log: OSLog.default, type: .info)
} //endif
} //endfunc
return true
}
预期和实际结果
我希望当由于用户与通知交互而从关闭状态启动该应用程序时,自定义“运行快捷方式”操作应使用存储在通知用户数据中的x-callback-url启动该快捷方式应用程序。