2012-10-11 56 views
6

我將用戶名,密碼和devicetoken的值發佈到.net webservice。但它沒有得到任何設備令牌值。我使用下面的代碼。如何獲取設備令牌?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; 
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeAlert ]; 
} 

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 
{  
    NSLog(@"didRegisterForRemoteNotificationsWithDeviceToken: %@", deviceToken); 
    NSString *dt = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]]; 
    dt = [dt stringByReplacingOccurrencesOfString:@" " withString:@""]; 
    self.DeviceToken=dt; 
    NSLog(@"~~~~devToken(dv)=%@",deviceToken); 
} 

- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error 
{  
    NSLog(@"Failed to get token, error: %@", error); 
} 

但在控制檯它顯示

Failed to get token, error: Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string found for application" UserInfo=0x1a0810 {NSLocalizedDescription=no valid 'aps-environment' entitlement string found for application

任何想法?提前致謝!

回答

1

你有沒有在你的臨時文件中啓用推送通知?

去走遍the tutorial檢查,如果你做了正確的

首先嚐試從Mac發送推送通知到設備,在教程中提到的。你需要,你需要從iOS的門戶網站:)

+0

嗨我得到了設備令牌,但它未能將值發佈到webservice。在控制檯它顯示-JSONValue失敗。錯誤跟蹤是:( 「錯誤域= org.brautaset.JSON.ErrorDomain代碼= 3」無法識別的前導字符\「UserInfo = 0x15e880 {NSLocalizedDescription =無法識別的前導字符}有什麼問題? – fathik

1

我假設你在設備上運行/調試,因爲你會得到一個不同的錯誤,試圖從模擬器註冊一個推送令牌。只是想把它弄明白。

這就是說,通常會導致您看到的錯誤是在您選擇的供應配置文件中未啓用推送通知。現在,您可能已經進入iOS配置門戶並啓用了推送您的App ID的功能(同時請注意,如果您已爲您的開發或分發配置文件啓用了推送功能)。但是,在完成此操作後,您必須進入配置門戶的「供應配置文件」並「髒」,才能生成新的供應配置文件,該配置文件中包含推送權利。

通過'弄髒'它我的意思是進入和改變一些設置的配置文件,以強制重新創建。如果您回到預配配置文件列表時,您會知道是否「足夠污染」了,狀態會暫時更改爲「待處理」幾秒鐘,然後再次變爲「活動」並允許您下載它。

哦,我剛剛發現這個還回答了這個問題(有人幫助,如果我掛錯了請):Bundle Identifier and push certificate... aps-environment entitlement error

0
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 
{  
    NSLog(@"didRegisterForRemoteNotificationsWithDeviceToken: %@", deviceToken); 
    NSString *dt = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]]; 
    dt = [dt stringByReplacingOccurrencesOfString:@" " withString:@""]; 
    self.DeviceToken=dt; 

} 
0

創建要獲得設備標識,在設備運行應用程序在服務器側的PEM文件。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    // Let the device know we want to receive push notifications 
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes: 
     (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)]; 

    return YES; 
} 

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken 
{ 
    NSLog(@"My token is: %@", deviceToken); 
} 

- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error 
{ 
    NSLog(@"Failed to get token, error: %@", error); 
} 
+0

我得到這個問題.. registerForRemoteNotificationTypes:在iOS 8.0及更高版本中不受支持。 – CAN