Я добавляю удаленные уведомления с помощью ArenaDeamons, но получаю сообщение об ошибке (MY APP KEY - мой закрытый ключ):

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    BDArenaConnector.initializeWithAppKey("MY APP KEY", runInSandboxEnvironment: true)
    BDArenaConnector.getInstance().requestAuth()
    // register for remote notifications
    UIApplication.sharedApplication().registerUserNotificationSettings(UIUserNotificationSettings.settingsForTypes((UIUserNotificationTypeSound|UIUserNotificationTypeAlert|UIUserNotificationTypeBadge), categories: nil))
    UIApplication.sharedApplication().registerForRemoteNotifications()
    BDArenaConnector.getInstance().pushConnector.feedbackServiceDidFinishLaunchingWithOptions(launchOptions)
    return true

UINavigationBar.appearance().barTintColor = UIColor.redColor()
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]
UIBarButtonItem.appearance().tintColor = UIColor.blueColor()
UINavigationBar.appearance().tintColor = UIColor.whiteColor()

    return true
}

Ошибка 1: use of unresolved identifier 'UIUserNotificationTypeBadge'
Ошибка 2: use of unresolved identifier 'UIUserNotificationTypeSound'
Ошибка 3: use of unresolved identifier 'UIUserNotificationTypeAlert'

У меня тоже есть ошибки:

func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {
    print("UIApplication : didFailToRegisterForRemoteNotificationsWithError : \(error.localizedDescription)")
    var alert: UIAlertController = UIAlertController(title: "did Fail To Register For Remote Notifications", message: error.localizedDescription(), preferredStyle: UIAlertControllerStyleAlert)
    var okAction: UIAlertAction = UIAlertAction.actionWithTitle("Ok!", style: UIAlertActionStyleDefault, handler: { (action: UIAlertAction) in
    })
    alert.addAction(okAction)
    self.window!.rootViewController!.presentViewController(alert, animated: true, completion: nil)
}

Ошибка 1: use of unresolved identifier 'UIalertcontrollerstylealert'
Ошибка 2: use of unresolved identifier 'UIalertactionstyledefault'

Как я могу это исправить? Приложение находится на Swift 2.

0
Michele Coladangelo 18 Фев 2016 в 17:26

3 ответа

Лучший ответ

Для ios 8 и выше вы можете использовать registerUserNotificationSettings, попробуйте этот код, я не тестировал его, но он вам точно поможет.

let types = UIUserNotificationType.Badge.union(UIUserNotificationType.Alert).union(UIUserNotificationType.Sound)
UIApplication.sharedApplication().registerUserNotificationSettings(UIUserNotificationSettings(forTypes: types, categories: nil))
UIApplication.sharedApplication().registerForRemoteNotifications()

Исправить ошибку 3

func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {
    print("UIApplication : didFailToRegisterForRemoteNotificationsWithError : \(error.localizedDescription)")
    let alert: UIAlertController = UIAlertController(title: "did Fail To Register For Remote Notifications", message: error.localizedDescription, preferredStyle: UIAlertControllerStyle.Alert)
    let okAction: UIAlertAction = UIAlertAction(title: "Ok!", style: UIAlertActionStyle.Default, handler: { (action: UIAlertAction) in
    })
    alert.addAction(okAction)
    self.window!.rootViewController!.presentViewController(alert, animated: true, completion: nil)
}
0
Prabhu.Somasundaram 19 Фев 2016 в 09:51

Частично исправлено. Теперь у меня всего 2 ошибки. Спасибо, Прабху Сомасундарам.

func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {
    print("UIApplication : didFailToRegisterForRemoteNotificationsWithError : \(error.localizedDescription)")
    let alert: UIAlertController = UIAlertController(title: "did Fail To Register For Remote Notifications", message: error.localizedDescription, preferredStyle: UIAlertControllerStyle.Alert)
    let okAction: UIAlertAction = UIAlertAction(title: "Ok!", style: UIAlertActionStyle.Default, handler: { (action: UIAlertAction) in
    })
    alert.addAction(okAction)
    self.window!.rootViewController!.presentViewController(alert, animated: true, completion: nil)
}

Ошибка 1: недопустимое использование '()' для вызова значения нефункционального типа 'String'

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
    BDArenaConnector.getInstance().pushConnector.feedbackServiceDidReceiveRemoteNotification(userInfo)
    // handle push
    BDArenaConnector.getInstance().pushConnector.handlePush(userInfo, withPresentingController: self.window!.rootViewController, withActionButtonHandler: {

        }, withCancelButtonHandler: {

    })
}

Ошибка 2: значение необязательного типа UIWindow не развернуто; вы хотели использовать '!' или '?'?

Как исправить?

0
Michele Coladangelo 20 Фев 2016 в 09:31

Вам нужно использовать UIAlertActionStyle.Default и UIAlertControllerStyle.Alert.

0
Forge 1 Окт 2016 в 15:06