2015-12-08 26 views
-1

我的代碼是如下的:當函數完成執行的任務的ios

-(BOOL)callregister 
{ 
    [[UIApplication sharedApplication] delegate]; 
    return YES; 
} 

的函數調用回主線程即使[UIApplication的sharedApplication]委託]沒有完成devicetoken registeration的任務的。

我希望函數返回是如果只有上面的執行完整的

感謝

+0

您發佈的代碼沒有意義。 1)'app'應該是'UIApplicationDelegate',而不是'UIApplication'。 2)你不使用'app'。 – rmaddy

+0

@rmaddy我的代碼已更新,請幫助填充 –

+1

這更沒有意義。你究竟想要做什麼?你的問題根本不清楚。 – rmaddy

回答

-1

[UIApplication的sharedApplication]代表];就像之前所說的那樣,什麼都不做。它是UIApplication的委託屬性的getter方法,它返回變量的值。當應用程序現在註冊接收遠程通知時,應用程序會調用didRegisterForRemoteNotificationsWithDeviceToken,應用程序會異步註冊它們,這就是爲什麼您無法立即獲取令牌的原因,您應該使用NSNotificationCenter來通知您的控制器。請閱讀這個蘋果guide

在你的應用程序代理didRegisterForRemoteNotificationsWithDeviceToken

[[NSNotificationCenter defaultCenter] postNotificationName:"DidRegisteredForRemoteNotifications" object:deviceToken]; 

在您的視圖控制器:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(handleRemoteNotificationsRegistration:) name:@"DidRegisteredForRemoteNotifications" 
               object:nil]; 
} 

- (void)dealloc{ 
    [[NSNotificationCenter defaultCenter] removeObserver:self]; 
} 

- (void)handleRemoteNotificationsRegistration:(NSNotification *)notification{ 
    NSLog(@"Device token %@", notification.object); 
} 

BUT!通常,視圖控制器不應該處理遠程通知註冊,您應該使用一些您的Web服務器API管理器,該管理器會將該令牌發送到服務器。

+0

當設備令牌準備好時是否有任何回調函數? –

+0

您可以使用NSNotificationCenter,defaultCenter應在didRegisterForRemoteNotificationsWithDeviceToken中發佈通知,並將該視圖控制器添加爲該通知名稱的觀察者。 –

+0

有沒有任何示例代碼可以幫忙? –

相關問題