关闭我的应用程序后如何处理通知动作?

时间:2019-03-23 23:13:32

标签: ios notifications

问题总结

我正在编写一个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启动该快捷方式应用程序。

0 个答案:

没有答案