【问题标题】:how to convert objective C push notification Code into Swift如何将目标 C 推送通知代码转换为 Swift
【发布时间】:2016-08-22 10:19:07
【问题描述】:
 NSDictionary *userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
    if(userInfo[@"aps"][@"url"])
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:userInfo[@"aps"][@"url"]]];

我想为推送通知快速编写此代码。当我从我的服务器发送推送通知时,它不会显示在我的手机上。

【问题讨论】:

    标签: ios objective-c swift push-notification


    【解决方案1】:
    if let userInfo = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? NSDictionary {
    
        if var alertDict = userInfo["aps"] as? Dictionary<String, String> {
            let url = alertDict["url"]!
            UIApplication.sharedApplication().openURL(NSURL(string: url)!)
        }
    }
    

    【讨论】:

      【解决方案2】:
      func registerForRemoteNotifications() {
              do {
              var types = [.Alert, .Badge, .Sound]
              var settings = UIUserNotificationSettings.settingsForTypes(types, categories: nil)
              UIApplication.sharedApplication().registerUserNotificationSettings(settings!)
              UIApplication.sharedApplication().registerForRemoteNotifications()
          } 
      }
      
      //invoke when registeration of device is successfully
      //get device token for push notification when device is registered
      
      func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
              do {
              print("\(deviceToken)")
              var strDeviceToken = "\(deviceToken)"
              strDeviceToken = strDeviceToken.stringByReplacingOccurrencesOfString(" ", withString: "")
              strDeviceToken = strDeviceToken.stringByReplacingOccurrencesOfString("<", withString: "")
              strDeviceToken = strDeviceToken.stringByReplacingOccurrencesOfString(">", withString: "")
              NSUserDefaults.standardUserDefaults().setValue(strDeviceToken, forKey: NOTIFICATION_DEVICE_TOKEN)
              print("Successfully registered for remote notifications With device Token \(strDeviceToken)")
          } 
      }
      
      //invoke when registeration of device is failed
      
      func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError?) {
              do {
              print("Notification registration failed reason:-\(error.localizedDescription)")
          }     catch let exception {
              print("Exception in fun:\(__func__) line:\(__LINE__) reason:\(exception.reason)")
          } 
      }
      
      //invoke when push notification is received
      
      func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
              do {
              print("userInfo:-\(userInfo)")
          }     catch let exception {
              print("Exception in fun:\(__func__) line:\(__LINE__) reason:\(exception.reason)")
          } 
      }
      

      【讨论】:

        【解决方案3】:

        试试这个:

        var userInfo = (launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey] as! [NSObject : AnyObject])
        if userInfo["aps"]["url"] {
            UIApplication.sharedApplication().openURL(NSURL(string: userInfo["aps"]["url"])!)
        }
        

        供日后参考:https://objectivec2swift.com/#/home/converter/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-08-09
          • 2014-03-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多