1

我們的項目目前有一個Node jS後端,我們希望爲iOS實現推送通知。我們做了一些研究,發現我們必須將APN提供給我們的令牌存儲在我們的數據庫中,以便將推送通知發送到特定設備。有人可以證實這一點,還是有更好的方式發送通知?存儲令牌推送通知

其次,我還發現,當設備經過軟件升級,這改變了他們的令牌這是否意味着我們必須有能力來更新我們的數據庫令牌,因爲它通常會發生變化。這也很重要。還有其他時候令牌可能會改變嗎?

最後,Node中是否有任何好的庫用於發送推送通知?

在此先感謝!

回答

2

您必須將通知accessToken發送到服務器,其類似地址以通知要發送。您不必擔心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

是的,你必須維護數據庫,即使它在兩個人之間存在,當用戶從ios 9重新安裝應用程序或acros恢復他們的電話以及更多的人可以有多個設備時accesstoken改變。所以,你一定要維護數據庫。 –