2012-06-03 54 views
2

我在嘗試在我的應用程序中提取設備令牌時遇到一些主要的麻煩。到目前爲止,我有從未調用iOS設備令牌回調

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  

    //register for push notifications 
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)]; 

然後

-(void)application:(UIApplication *)app didRegisterForRemoteNotificationsWith:DeviceToken:(NSData *)deviceToken 
{ 
    NSString *str = [deviceToken description]; 
    NSLog(@"%@", str); 
} 

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

這裏的交易。

我的iPhone模擬器:我得到

Failed to get token, error: Error Domain=NSCocoaErrorDomain Code=3010 "remote notifications are not supported in the simulator" UserInfo=0x5813d20 {NSLocalizedDescription=remote notifications are not supported in the simulator} 

預期。

在我的iPod Touch上,第二代,運行iOS 4.2,都沒有調用任何回調。同樣的事情發生在我的同事iPhone 4上運行iOS 5.1.1

最後,在另一個同事iPhone 4運行iOS.5.1.1,它似乎返回設備令牌是「com.apple.mobileconfig」..這很奇怪。

我已驗證爲我的設備上的應用啓用了通知。我還驗證了我的應用程序標識符包在xCode中正確設置。

編輯:我不知道發生了什麼,但是,在發佈這個線程幾天後,設備也。我對供應配置文件進行了一些更改(必須添加新設備的UDID等),以便可以將某些問題弄糟。不太確定。

EDIT2:這似乎有一個在didRegister回調一個額外的冒號,DeviceToken前右...

+0

「iTouch 1st gen」是什麼意思? iPod Touch?如果是這樣,你是如何裝載iOS 4.2的? (3.2是最新的,將正式加載該型號) –

+0

hmph ..它可能是第二代。 編輯:是的,這是第二代。 – marklar

回答

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

-(void)application:(UIApplication *)app didRegisterForRemoteNotificationsWith:DeviceToken:(NSData *)deviceToken 

注意額外的冒號第二,不正確的版本...愚蠢的錯誤。

道德故事:小心複製和粘貼:)

2

Technical Note TN2265 Troubleshooting Push Notifications(重點煤礦):

沒有委託回調

當安裝第一個可推送應用程序時,iOS或Mac OS X會嘗試建立到推送服務的永久網絡連接,該服務將由系統上的所有可推送應用程序共享。 如果既沒有委託回叫application:didRegisterForRemoteNotificationsWithDeviceToken:也沒有application:didFailToRegisterForRemoteNotificationsWithError:被調用,這意味着此連接尚未建立。

這不一定是錯誤條件。系統可能根本沒有互聯網連接,因爲它超出了任何手機信號塔或Wi-Fi接入點的範圍,或者它可能處於飛行模式。不要將其視爲錯誤,您的應用應該繼續正常運行,只禁用依賴推送通知的功能。

請記住,網絡可用性可能會頻繁更改。一旦與推送服務的持續連接成功,將會調用前面提到的應用程序委託方法之一。

+0

感謝您的快速回復。然而,我確實在家裏有一個持久的wifi連接。我還打開了端口5223,這是我見過的推薦的一些地方。 – marklar