2012-11-20 62 views
0

我在故事板中有一個初始視圖控制器,名爲LoadAppViewController。在方法viewDidAppear中的這個視圖控制器中,我發送一個請求,讓服務器更新手機上的數據。正確時刻無法從appDelegate獲取deviceToken

現在的事情是 - 在這個請求我發送設備令牌推送通知。但是,正如我注意到的,它發送Null而不是設備令牌。據我瞭解,問題是執行方法viewDidAppear後調用AppDelegate類。

我的問題是 - 我該如何解決這個問題? 順便說一句 - 這個問題只出現在我在iPad上運行應用程序,在方法viewDidAppear類AppDelegate已被調用,一切都很好。

+0

你是說你的第一個視圖控制器的'viewWillAppear'後面纔會調用AppDelegate的'applicationDidFinishLaunching'方法嗎?你可以仔細檢查? – Krishnabhadra

+0

你在Device中測試過...> –

+0

問題是說,他用iphone和ipad,所以看起來他**在設備上做過**測試 – Krishnabhadra

回答

0

設備令牌不依賴於您的任何視圖控制器的加載時間或屏幕顯示時間。

from applicationDidFinishedLaunching,你應該觸發從蘋果獲取設備令牌的請求。那麼你需要等待,直到你得到響應(無論是 - 失敗/成功) 當你的委託與成功調用:

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

然後用進一步的過程中,你要發送設備令牌服務器進行。

+0

它取決於你。你可以不加載它,或者你可以將代碼從viewDidLoad/viewDidAppear移出,並使其成爲一種方法。你可以調用它一次,你得到確認,你已經收到devicetoken – samfisher

+0

問題是 - (無效)應用程序:(UIApplication *)應用程序didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken調用後viewDidAppear。 – NewObjective

+0

或者當您使用「deviceToken」屬性或方法獲取標記時,告訴您的LoadAppViewController。 –