1

В нашем проекте в настоящее время имеется узел Node jS, и мы хотим реализовать push-уведомления для iOS. Мы провели некоторое исследование и выяснили, что нам нужно будет хранить токены, которые APN дает нам в нашей БД, чтобы отправлять push-уведомления на определенные устройства. Может ли кто-нибудь подтвердить это или есть лучший способ отправки уведомлений?Хранение токенов для Push-уведомлений

Во-вторых, я также обнаружил, что, когда устройства проходят обновление программного обеспечения, это изменяет токен, поэтому это означает, что мы должны иметь возможность обновлять токен в нашей БД, потому что он будет часто меняться. Это также очень важно. Есть ли и другие моменты, когда токен может измениться?

Наконец, есть ли хорошие библиотеки в узле для отправки push-уведомлений?

Заранее благодарен!

ответ

2

Необходимо отправить уведомление на доступ к серверу, его адрес для отправки уведомлений. Вам не нужно беспокоиться об изменении в accesstoken, потому что вы должны отправлять его при каждом входе в систему, так что новый обновленный accesstoken будет добавляться и на сервере. Вы должны зарегистрироваться для удаленного уведомления в своем Appdelegate, как это, а затем отправить сохраненный токен в nsuserdefault на сервере в API входа.

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    // Override point for customization after application launch. 


    let settings = UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil) 
     UIApplication.sharedApplication().registerUserNotificationSettings(settings) 
    UIApplication.sharedApplication().registerForRemoteNotifications() 
    return true 
} 

//Called if successfully registered for APNS. 
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { 
    // let deviceTokenString = NSString(format: "%@", deviceToken) as String 

    var tokenStr = deviceToken.description 
    tokenStr = tokenStr.stringByReplacingOccurrencesOfString("<", withString: "", options: [], range: nil) 
    tokenStr = tokenStr.stringByReplacingOccurrencesOfString(">", withString: "", options: [], range: nil) 
    tokenStr = tokenStr.stringByReplacingOccurrencesOfString(" ", withString: "", options: [], range: nil) 
    print(deviceToken.description) 
    print(tokenStr) 
    //save the token in NSUserDefaults 
    NSUserDefaults.standardUserDefaults().setObject(deviceTokenString, forKey: "deviceToken") 


} 

//Called if unable to register for APNS. 
func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) { 

    print(error) 

} 

Reference Apple's Documentation

Маркер устройства является ключом к отправке уведомления толчка, чтобы ваше приложение на конкретном устройстве. Идентификаторы устройства могут меняться, поэтому ваше приложение должно перерегистрироваться при каждом запуске и передавать полученный токен обратно на ваш сервер. Если вам не удалось обновить токен устройства, удаленные уведомления могут не попасть на устройство пользователя. Значки устройства всегда меняются, когда пользователь восстанавливает данные резервного копирования на новое устройство или компьютер или переустанавливает операционную систему. При переносе данных на новое устройство или компьютер пользователь должен запустить приложение после , прежде чем удаленные уведомления могут быть доставлены на это устройство.

+0

Спасибо за этот ответ, но я думаю, мне все еще интересно, хочу ли я отправлять уведомления между двумя людьми, я все еще храню в своей базе данных? Спасибо –

+0

Да, вы должны поддерживать базу данных, даже если ее между двумя людьми, accesstoken изменяется, когда пользователь переустанавливает приложение с ios 9 или восстанавливает свой телефон, и более того, у одного человека может быть несколько устройств. Итак, вы определенно должны поддерживать базу данных. –

Смежные вопросы