-2

I would call a NSURLSessionDataTask in appDelegate when the app is open from mail, so in this function

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

I tried but doesn't work, why??

I need to get a query from this function

- (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;

}

Thank you

4

1 回答 1

0

从任何地方打开应用程序时,application:didFinishLaunchingWithOptions:都会调用 。

在那里您检查 launchOptions 以查看是什么触发了应用程序的打开。

例如,如果应用程序是使用推送通知打开的。您执行以下操作。

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

您可以检查从 Mail 打开应用程序时获得的密钥。

更新

有一些键UIApplicationLaunchOptionsSourceApplicationKeyUIApplicationLaunchOptionsURLKey您可以打印或比较触发应用程序启动的键,然后开始您的工作。

当您从 Mail 打开您的应用程序时,然后打印以下内容并使用它来比较和开始您的工作。

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.
    print(launchOptions?[UIApplicationLaunchOptionsSourceApplicationKey])
    print(launchOptions?[UIApplicationLaunchOptionsURLKey])
    return true
}
于 2016-04-16T17:39:37.983 回答