ios10,Swift 3和Firebase推送通知设置

时间:2016-10-07 12:45:46

标签: swift xcode firebase firebase-cloud-messaging

我正在尝试按推送通知的示例 https://firebase.google.com/docs/cloud-messaging/ios/client

我在appDelete.swift上遇到问题 例如

if (length && $(this).text().search(new RegExp($(filter).val(), "i")) 

}

错误是

方法'applicationReceivedRemoteMessage(remoteMessage :)'与协议'FIRMessagingDelegate'('applicationReceivedRemoteMessage')所需的参数名称不同

我在屏幕上出现以下错误

enter image description here

我也有以下cocopods

Sub avarage()
    Range("A2:C6").AutoFilter
    ActiveSheet.Range("$A$2:$C$6").AutoFilter Field:=3, Criteria1:="Yes"
    Range("B7").FormulaR1C1 = "=MIDDEL(R[-5]C:R[-1]C)"
    Range("B7").Font.Bold = True
End Sub

有人能告诉我哪里出错了吗?我看到了项目fcm示例,当我编译一切都没问题时。

1 个答案:

答案 0 :(得分:1)

问题是您正在查看的示例代码位于Swift 2.3中,而您的项目位于Swift 3.0中。

有几种方法可以解决这个问题:

  1. 继续使用swift 2.3。您可以转到项目,选择Build Settings并将使用旧版Swift语言版更改为

  2. 让Xcode自动为您更新。您可以转到编辑>来执行此操作转换>当前的Swift语法...... ,它应该有希望解决你所看到的问题。

  3. 手动更新代码。正如您所看到的,Xcode通常知道更新的代码是“应该”的,但是看起来像给你麻烦的方法可以更新为看起来像这样的东西:

    func application(application: UIApplication,
                   didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    
      if #available(iOS 10.0, *) {
        let authOptions : UNAuthorizationOptions = [.alert, .badge, .sound]
        UNUserNotificationCenter.current().requestAuthorization(options: authOptions, completionHandler: {_,_ in })
    
        // For iOS 10 display notification (sent via APNS)
        UNUserNotificationCenter.current().delegate = self
        // For iOS 10 data message (sent via FCM)
        FIRMessaging.messaging().remoteMessageDelegate = self
    
      } else {
        let settings: UIUserNotificationSettings =
          UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
        application.registerUserNotificationSettings(settings)
      }
    
      application.registerForRemoteNotifications()
    
      FIRApp.configure()
    
      // Add observer for InstanceID token refresh callback.
      NotificationCenter.default.addObserver(self,
                                             selector: #selector(self.tokenRefreshNotification),
                                             name: NSNotification.Name.firInstanceIDTokenRefresh,
                                             object: nil)
    
      return true
    }
    
  4. Bug Firebase示例代码告诉他们,“嘿!您忘了将此示例更新为Swift 3.0!”幸运的是,我能够做到这一点,所以现在就告诉他们。 :)