2010-06-18 105 views
3

我還沒有在我的應用中實施推送通知。我的理解是設備上運行的應用程序必須請求令牌,然後將此令牌發送到我的服務器,並且我的服務器必須將此令牌傳遞給Apple,只要我想將消息推送到設備/應用程序。驗證iphone推送通知令牌?

請求的特定於應用程序的推送令牌,還是設備上的所有應用程序共享一個令牌?

有沒有什麼辦法可以讓我確認設備發送給我的服務器的令牌確實是由我的應用中的請求生成的?

我很擔心一個可能的欺騙,其中一個流氓應用程序可以發送一個有效的令牌給我的服務器,而不是我的應用程序請求的令牌。這將欺騙我的服務發送推送通知到該設備/應用程序。

我知道這是不太可能發生的情況。我試圖創建一種機制來驗證當我的應用程序向我的服務器發送信息時,我的確在與我的應用程序實例進行交談,而不是一些流氓客戶端。推送通知似乎是實現此目的的一種可能方式。

回答

10

請求的特定於應用程序的推送令牌,還是設備上的所有應用程序共享一個令牌? 請求的令牌不是特定於您的應用程序和每個設備的。

有沒有什麼辦法可以驗證設備發送給我的服務器的令牌確實是由我的應用程序中的請求生成的? 有一個蘋果服務,您可以在該服務中查詢和了解令牌是否「仍然有效」,這用於諸如當用戶刪除您的應用程序並且令牌無效時,您可以查詢該服務以及檢查令牌是否仍然有效,如果不從數據庫中刪除它...所以你也可以使用這個服務來確保任何給定的令牌都是有效的......無論如何,如果你試圖推送一個無效的令牌,我懷疑什麼都不會發生......

希望這有助於

+0

令牌實際上是獨一無二的設備和應用程序的組合。因此,同一個應用程序,在同一個iTunes帳戶上,在不同的設備上會得到不同的令牌。這樣用戶就可以控制通知發送到哪些設備。 – Alex 2010-06-18 17:53:32

+0

檢查http://stackoverflow.com/questions/1278834/php-technique-to-query-the-apns-feedback-server驗證 – 2011-07-01 13:36:53

-1
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)dToken { 

    NSString *strToken = [NSString 
        stringWithFormat:@"%@",dToken]; 

    NSLog(@"deviceToken is : %@",strToken); 

    strToken = [strToken stringByReplacingOccurrencesOfString:@" " withString:@""]; 
    strToken = [strToken stringByReplacingOccurrencesOfString:@"<" withString:@""]; 
    strToken = [strToken stringByReplacingOccurrencesOfString:@">" withString:@""]; 

    NSLog(@"deviceToken is : %@",strToken); 
} 
+0

這個答案與問題無關。 – 2016-05-10 16:56:35