iOS 10/Swift 3でURLを開いてローカル通知を処理しようとしています。通知のデフォルトアクションに割り当てられたURLとカスタムアクションボタンに割り当てられたURLがあります。通知アクションハンドラからURLを開くことができません
デフォルトの操作(通知自体をタップ)が発生すると、アプリはURLを正常に開きます。しかし、アクションボタンをタップすると、UNUserNotificationCenterDelegate
ハンドラが呼び出され、canOpenURL
がtrueを返しますが、URLを開くための呼び出しは失敗します。
この問題は、通知がタップされたときにアプリがバックグラウンドまたは終了した場合にのみ発生します。アプリがフォアグラウンドにある場合、両方のケースが機能します。
また、私のアプリケーションデリゲートのapplication(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:])
メソッドにブレークポイントがあります。これは、デフォルトアクションのためにヒットしますが、カスタムアクションはヒットしません。
カスタムアクションを処理するときに何か別の処理を行う必要がありますか?ここで
コードです:
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping() -> Void) {
switch response.actionIdentifier {
case UNNotificationDefaultActionIdentifier:
if let link = URL(string: "myapp://default"),
UIApplication.shared.canOpenURL(link) {
UIApplication.shared.open(link) { result in
print("open url result: \(result)") // this works!
}
}
case "customActionIdentifier":
if let link = URL(string: "myapp://custom"),
UIApplication.shared.canOpenURL(link) {
UIApplication.shared.open(link) { result in
print("open url result: \(result)") // this fails!
}
}
}
completionHandler()
}
あなたは私の人生を保存しました:) –