2017-02-09 1 views
1

В моем приложении я хочу, чтобы URL запускался, когда наступает мое уведомление . Проблема в том, что когда я запускаю приложение , он помещает меня на передний план, но не запускает URL (я добавил .foreground в уведомление ). Вот мой код:Мой URL-адрес не запускается после того, как я коснулся моего действия по уведомлению. Что я делаю?

extension AppDelegate: UNUserNotificationCenterDelegate { 
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping() -> Void) { 

    if response.actionIdentifier == "call" { 


      if let urled = URL(string: "tel://1234567891") { 
       UIApplication.shared.open(urled, options: [:])        
      }     

    } 


} 
} 

Anyones help be great :) Спасибо за любые ответы!

+0

Где переменная 'number' получить набор или получить доступ? Я нигде не вижу ссылки на него. – creeperspeak

+0

@creeperspeak переменная 'number' установлена ​​прямо над функцией, я просто не хочу делиться телефонными номерами – krish

+0

Хорошо, подтвердили ли вы, что' if let urled' проходит? Вы можете попробовать вызвать 'canOpenUrl', чтобы узнать, является ли URL-адрес допустимым. Пробовали ли вы печатать '' tel: // \ (number) "', чтобы посмотреть, выглядит ли это правильно? Если 'number' является необязательным, вам также необходимо развернуть его первым. Может быть много чего, но заявления печати и точки останова могут решить проблему для вас. – creeperspeak

ответ

0

Для iOS 10: Добавить UserNotifications.framework в ваше приложение. Проверьте, что вы установили делегат для push-уведомления. если вы уже установили тогда попробуйте следующий метод для прошивки 10.

import UserNotifications 

@UIApplicationMain 

class AppDelegate: UIResponder, UIApplicationDelegate,UNUserNotificationCenterDelegate { 
} 



func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (_ options: UNNotificationPresentationOptions) -> Void) { 
    print("Handle push from foreground") 
    // custom code to handle push while app is in the foreground 
    print("\(notification.request.content.userInfo)") 

} 


func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping() -> Void) { 

print("Handle push from background or closed") 

    // if you set a member variable in didReceiveRemoteNotification, you will know if this is from closed or background 

print("\(response.notification.request.content.userInfo)") 

} 
+0

Просмотрите эту ссылку для Objective C: http://stackoverflow.com/questions/39490605/push-notification-issue-with-ios-10?answertab=votes#tab-top –

0

Попробуйте это:

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping() -> Void) { 

if response.actionIdentifier == "call" { 

    if let urled = URL(string: "tel://\(1234567891)") { 
     if UIApplication.shared.canOpenURL(urled) { 
      UIApplication.shared.open(urled, options: [:], completionHandler: { (completed) in 
       // completionHandler block 
      }) 
     } 
    } 
} 
completionHandler()} 
0

Я попробовал то же самое, и я сталкиваюсь с той же проблемой.

Вы можете попробовать альтернативное решение, если используете Уведомить нас об ошибке..

С мы можем обрабатывать действия уведомления в обоих Extension, а также Containing App, вы можете попробовать его обработки в Extension используя extensionContext вместо Containing App's UIApplication object.

Попробуйте это:

func didReceive(_ response: UNNotificationResponse, completionHandler completion: @escaping (UNNotificationContentExtensionResponseOption) -> Void) 
    { 
     if response.actionIdentifier == "call" 
     { 
      self.extensionContext?.open(URL(string: "tel:9555221836")!, completionHandler: { (done) in 
       completion(.dismiss) 
      }) 
     } 
     //Handling other actions... 
    } 
Смежные вопросы