appdelegate 中的 NSURLSessionDataTask
NSURLSessionDataTask in appdelegate
当应用程序从邮件中打开时,我会在 appDelegate 中调用 NSURLSessionDataTask,所以在这个函数中
- (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;
}
谢谢
从任何地方打开应用程序时,都会调用 application:didFinishLaunchingWithOptions:
。
在那里你可以检查启动选项,看看是什么触发了申请开放。
例如,如果使用推送通知打开应用程序。你做如下的事情。
if let userInfo = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? [NSObject : AnyObject] {
self.application(application, didReceiveRemoteNotification: userInfo)
}
您可以查看从邮件打开应用程序时获得的密钥。
更新
有 UIApplicationLaunchOptionsSourceApplicationKey
和 UIApplicationLaunchOptionsURLKey
等键,您可以打印它们或与触发应用程序启动的键进行比较,然后开始您的工作。
当您从 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
}
当应用程序从邮件中打开时,我会在 appDelegate 中调用 NSURLSessionDataTask,所以在这个函数中
- (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;
}
谢谢
从任何地方打开应用程序时,都会调用 application:didFinishLaunchingWithOptions:
。
在那里你可以检查启动选项,看看是什么触发了申请开放。
例如,如果使用推送通知打开应用程序。你做如下的事情。
if let userInfo = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? [NSObject : AnyObject] {
self.application(application, didReceiveRemoteNotification: userInfo)
}
您可以查看从邮件打开应用程序时获得的密钥。
更新
有 UIApplicationLaunchOptionsSourceApplicationKey
和 UIApplicationLaunchOptionsURLKey
等键,您可以打印它们或与触发应用程序启动的键进行比较,然后开始您的工作。
当您从 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
}