我的代碼是如下的:當函數完成執行的任務的ios
-(BOOL)callregister
{
[[UIApplication sharedApplication] delegate];
return YES;
}
的函數調用回主線程即使[UIApplication的sharedApplication]委託]沒有完成devicetoken registeration的任務的。
我希望函數返回是如果只有上面的執行完整的
感謝
我的代碼是如下的:當函數完成執行的任務的ios
-(BOOL)callregister
{
[[UIApplication sharedApplication] delegate];
return YES;
}
的函數調用回主線程即使[UIApplication的sharedApplication]委託]沒有完成devicetoken registeration的任務的。
我希望函數返回是如果只有上面的執行完整的
感謝
[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管理器,該管理器會將該令牌發送到服務器。
當設備令牌準備好時是否有任何回調函數? –
您可以使用NSNotificationCenter,defaultCenter應在didRegisterForRemoteNotificationsWithDeviceToken中發佈通知,並將該視圖控制器添加爲該通知名稱的觀察者。 –
有沒有任何示例代碼可以幫忙? –
您發佈的代碼沒有意義。 1)'app'應該是'UIApplicationDelegate',而不是'UIApplication'。 2)你不使用'app'。 – rmaddy
@rmaddy我的代碼已更新,請幫助填充 –
這更沒有意義。你究竟想要做什麼?你的問題根本不清楚。 – rmaddy