2016-04-16 2 views
-2

я бы назвал NSURLSessionDataTask в AppDelegate, когда приложение работает с почтой, так что в этой функцииNSURLSessionDataTask в AppDelegate

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 

Я пытался, но не работает, почему ??

мне нужно получить запрос от этой функции

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
{ 
NSURLComponents *components = [[NSURLComponents alloc] init]; 
components.query = [url query]; 

BOOL confirmRegistration = NO; 
NSString *userToken; 
for (NSURLQueryItem *queryItem in components.queryItems) { 
    if ([queryItem.name isEqualToString:@"userToken"]) 
    { 
     userToken = queryItem.value; 
    } 
    else if ([queryItem.name isEqualToString:@"registrationType"]) 
    { 
     if ([queryItem.value isEqualToString:@"confirmRegistration"]) 
     { 
      confirmRegistration = YES; 
     } 
    } 
} 

//la app è stata aperta con la mail di conferma registrazione 
if (confirmRegistration) 
{ 
    NSDictionary* userInfo = @{@"userToken": userToken}; 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"confirmRegistration" object:nil userInfo:userInfo]; 
} 

return YES; 

}

Спасибо

+0

Что вы подразумеваете под словом "it does not work"? Это крушение? Не звонит ли он? Это начинается и застревает? – EmilioPelaez

ответ

0

При открытии приложения из любой точки мира, то application:didFinishLaunchingWithOptions: называется.

Там вы проверяете startingOptions, чтобы узнать, что вызвало открытие приложения.

Например, если приложение открывается с помощью push-уведомлений. Вы делаете что-то вроде ниже.

if let userInfo = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? [NSObject : AnyObject] { 
    self.application(application, didReceiveRemoteNotification: userInfo) 
} 

Вы можете проверить ключи, которые вы получаете при открытии приложения из Почты.

UPDATE

Есть ключи как UIApplicationLaunchOptionsSourceApplicationKey и UIApplicationLaunchOptionsURLKey, которые вы можете распечатать или сравнение с тем, что вызвало запуск приложения, а затем начать свою работу.

Когда вы открываете приложение из Почты, распечатайте следующее и используйте его для сравнения и начала работы.

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    // Override point for customization after application launch. 
    print(launchOptions?[UIApplicationLaunchOptionsSourceApplicationKey]) 
    print(launchOptions?[UIApplicationLaunchOptionsURLKey]) 
    return true 
} 
+0

Извините, я не понимаю –

+0

Обновлен кодом и ключами. –

+0

return null each two –