当功能完成时执行任务ios

时间:2015-12-08 15:44:17

标签: ios objective-c

我的代码如下:

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

函数回调到主线程,即使[[UIApplication sharedApplication]委托]没有完成devicetoken registeration的任务。

如果只有上述执行完成

,我希望函数返回yes

由于

1 个答案:

答案 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管理器,它将该令牌发送到服务器。