推送僅適用於設備令牌,您必須獲取並將其存儲在服務器上。
我們在服務器上存儲設備令牌,服務器發送通知給所有用戶。 如果我們不保存設備令牌,那麼服務器如何發送通知以及在哪裏(設備令牌是每個設備的唯一ID)。
在應用程序委託你必須用這種方法得到它
-(void)application:(UIApplication *)app
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
const unsigned *tokenBytes = [deviceToken bytes];
NSString *hexToken = [NSString stringWithFormat:@"%08x%08x%08x%08x%08x%08x%08x%08x",
ntohl(tokenBytes[0]), ntohl(tokenBytes[1]), ntohl(tokenBytes[2]),
ntohl(tokenBytes[3]), ntohl(tokenBytes[4]), ntohl(tokenBytes[5]),
ntohl(tokenBytes[6]), ntohl(tokenBytes[7])];
[[NSUserDefaults standardUserDefaults] setObject:hexToken forKey:@"DeviceTokenValue"];// Save your device token for use
[self saveDeviceToken:hexToken];//Send your device token to the server with API
}
感謝您的快速回復。 deviceToke值始終保持唯一嗎? – Siddharth
iOS 9之後,如果用戶卸載應用程序然後安裝應用程序,則每次都會更改。否則它會一樣....並且設備令牌對於每個設備都是不同的。 你必須只調用一次註冊設備方法 在didFinishLaunchingOptions方法中,你必須檢查,該設備令牌是否保存在NSUserDefaults或沒有,如果沒有保存,然後調用註冊方法 –
好吧,我得到你想說的。所以我可能只需要在完整的應用程序生命中獲得deviceToken和註冊過程一次?當用戶第一次運行時。 – Siddharth