我的代码如下:
-(BOOL)callregister
{
[[UIApplication sharedApplication] delegate];
return YES;
}
函数回调到主线程,即使[[UIApplication sharedApplication]委托]没有完成devicetoken registeration的任务。
如果只有上述执行完成
,我希望函数返回yes由于
答案 0 :(得分:-1)
[[UIApplication sharedApplication] delegate];什么也没做,正如之前所说。它是UIApplication的委托属性的getter方法,它返回变量的值。当应用程序现在已注册接收远程通知时,会调用didRegisterForRemoteNotificationsWithDeviceToken,应用程序会异步注册它们,这就是为什么您无法尽快获得令牌,您应该使用NSNotificationCenter通知您的控制器。请阅读此苹果guide。
在您的app appate 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管理器,它将该令牌发送到服务器。