swift – 如何创建URL按下通知 *** 作时运行?

swift – 如何创建URL按下通知 *** 作时运行?,第1张

概述我创建了一个包含两个 *** 作的通知.我的一个动作叫做“取消”,而另一个叫做“呼叫”.如何使“调用” *** 作运行我添加到代码中的注释中的URL.这是我的代码: func notificationFires(){ /** URL Code: if let url = URL(string: "tel://") { UIApplication.shared.open(u 我创建了一个包含两个 *** 作的通知.我的一个动作叫做“取消”,而另一个叫做“呼叫”.如何使“调用” *** 作运行我添加到代码中的注释中的URL.这是我的代码:

func notificationFires(){    /**     URL Code:     if let url = URL(string: "tel://") {     UIApplication.shared.open(url,options: [:])     }**/    let call = UNNotificationAction(IDentifIEr:"call",Title:"Call",options:[.foreground])    let cancel = UNNotificationAction(IDentifIEr: "cancel",Title: "Cancel",options: [.destructive ])    let category = UNNotificationcategory(IDentifIEr: "category",actions: [call,cancel],intentIDentifIErs: [],options: [])    UNUserNotificationCenter.current().setNotificationCategorIEs([category])    let notification = UIlocalnotification()    notification.category = "category"    // 2    notification.soundname = UIlocalnotificationDefaultSoundname    notification.fireDate = datePicker.date    // 3    if textFIEld.text == "" {        notification.alertbody = "You have a call right Now!"    }    else{        notification.alertbody = self.textFIEld.text    }    // 4    notification.timeZone = NSTimeZone.default    // 5    // 6    notification.applicationIconBadgeNumber = 1    // 7    func application(application: UIApplication!,handleActionWithIDentifIEr IDentifIEr:String!,forlocalnotification notification:UIlocalnotification!,completionHandler: (() -> VoID)!){        if (IDentifIEr == "call"){            if let url = URL(string: "tel://2162964785") {                UIApplication.shared.open(url,options: [:])            }        }else if (IDentifIEr == "cancel"){        }    }    UIApplication.shared.schedulelocalnotification(notification)    func application(application: UIApplication,dIDReceivelocalnotification userInfo: [NSObject : AnyObject],fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> VoID) {        print("RecIEved: notification")        let center = UNUserNotificationCenter.current()        center.removeDeliverednotifications(withIDentifIErs: ["notification"])    }}
解决方法 假设您的通知正常,您可以符合UNUserNotificationCenterDelegate来处理“调用” *** 作.

就像是:

func userNotificationCenter(_ center: UNUserNotificationCenter,dIDReceive response: UNNotificationResponse,withCompletionHandler completionHandler: @escaPing () -> VoID) {        if response.actionIDentifIEr == "call" {            let body = response.notification.request.content.body            if let url = URL(string: "tel://\(body)") {                UIApplication.shared.open(url,options: [:],completionHandler: nil)            }        }    }

主体常量将设置为您要“打开”的电话号码.

此外,重要的是要注意这必须在实际设备上进行测试.打开tel方案在模拟器中什么都不做.

UNUserNotificationCenterDelegate API参考:https://developer.apple.com/reference/usernotifications/unusernotificationcenterdelegate

编辑:

您不需要调用委托方法.相反,你实现它.委托方法由UNUserNotificationCenter调用.

为了使其正常工作,确保将UNUserNotificationCenter.current()委托属性设置为符合UNUserNotificationCenterDelegate协议的类非常重要.

例如,如果您在AppDelegate中处理通知,则可能具有以下方法:

func callNotification() {    let center = UNUserNotificationCenter.center()    // Todo: - Create your actions,category,content,trigger and request...    center.delegate = self // important!    center.removeAllPendingNotificationRequests()    center.add(request,withCompletionHandler: nil)}

上面的方法将负责定义您的通知并安排它.为简洁起见,我已经省略了所有定义通知的代码,因为您表明这是有效的.相反,您应该注意委托属性设置为self.

然后在扩展中,您将使AppDelegate符合UNUserNotificationCenterDelegate并实现所需的方法.

extension AppDelegate: UNUserNotificationCenterDelegate {    func userNotificationCenter(_ center: UNUserNotificationCenter,completionHandler: nil)            }        }    }}

现在,因为您的AppDelegate符合UNUserNotificationCenterDelegate协议并且您将self(AppDelegate)设置为UNUserNotificationCenter的委托,所以将调用userNotification(_:dIDReceive:withCompletionHandler :)方法的实现.

总结

以上是内存溢出为你收集整理的swift – 如何创建URL按下通知 *** 作时运行?全部内容,希望文章能够帮你解决swift – 如何创建URL按下通知 *** 作时运行?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1044003.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存