В моем приложении я нажимаю локальные уведомления после того, как пользователь выполнит определенное действие.
Когда пользователь открывает приложение из нажатого уведомления, я хочу зарегистрировать событие в системе слежения (в моем случае это Mixpanel).
У меня должен быть ключ для регистрации события, которое я получаю с моего сервера.Выполните функцию только после завершения первой функции - ios
Так что я хочу сделать, это получить ключ в функции, и после завершения этой функции я хочу зарегистрировать событие.
Я попытался performSelectorOnMainThread:withObject:waitUntilDone:
, но это не сработало
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//some code here
[self performSelectorOnMainThread:@selector(performHandShake)
withObject:nil
waitUntilDone:YES];
[self performSelectorOnMainThread:@selector(registerLaunchOptionsDetails:)
withObject:launchOptions
waitUntilDone:YES];
//some code here
}
-(void)performHandShake
{
//myParams here
[[RKClient sharedClient] get:@"/handshake" usingBlock:^(RKRequest *request) {
request.params = [RKParams paramsWithDictionary:myParams];
request.method = RKRequestMethodGET;
request.onDidLoadResponse = ^(RKResponse *response) {
//Set the tracking key here
};
request.onDidFailLoadWithError = ^(NSError *error) {
NSLog(@"ERROR:%@",error);
};
}];
}
-(void)registerLaunchOptionsDetails:(NSDictionary *)launchOptions
{
UILocalNotification *localNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsLocalNotificationKey];
if (localNotification) {
//Register the event here using the key
}
}
Проблема заключается функция registerLaunchOptionsDetails
выполняется перед performHandShake
завершена, и события не регистрируются.
Вы можете просто позвонить 'registerLaunchOptionsDetails' функцию в конце функции рукопожатия? –
Вы должны использовать Grand Central Dispatch в этом случае. Использование очередей рекомендуется в этих ситуациях – Ali
попытаться вызвать callregisterLaunchOptionsDetails из блока onDidLoadResponse? – alex