我已经实现了一个URL Scheme,并使用它通过调用方法将数据传递到我的应用程序中。以下是整个代码:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
// Check the calling application Bundle ID
if ([[url scheme] isEqualToString:@"yuvitime"])
{
NSLog(@"URL scheme:%@", [url scheme]);
NSString * yuvitimeRequestValue = [url query];
NSDictionary * userInfor = [[NSDictionary alloc]initWithObjectsAndKeys:yuvitimeRequestValue, @"YuvitimeRequest", nil];
NSNotificationCenter * notificationCentre = [NSNotificationCenter defaultCenter];
[notificationCentre postNotificationName:@"URLSCHEMEACTIVATEDNOTIFICATION" object:self userInfo:userInfor];
return YES;
}
else
return NO;
}
如果我的应用程序在后台运行,一切都很好。当你点击网址时,应用程序将被带回前台,并处理与上面函数中编码的相同的URL。然而,如果应用程序被终止(应用程序尚未启动),则仅会启动应用程序,而不调用上面显示的处理函数。
经过搜索,我找到的最佳结果是:
application:WillFinishLaunchingWithOptions: 当被要求打开URL时,此方法的返回结果与application:didFinishLaunchingWithOptions:方法的返回结果组合起来确定是否应处理URL。如果任一方法返回NO,则系统不会调用application:openURL:options:方法。如果您没有实现其中一个方法,则仅考虑实现方法的返回值。
- application:didFinishLaunchingWithOptions: 此方法代表您处理launchOptions字典中任何键的最后机会。如果您没有在您的application:willFinishLaunchingWithOptions:方法中评估这些键,则应在此方法中查看它们并提供适当的响应。 非应用程序委托的对象可以通过观察名为UIApplicationDidFinishLaunchingNotification的通知并访问通知的userInfo字典来访问相同的launchOptions字典值。该通知在此方法返回后不久发送。 此方法的返回结果与application:willFinishLaunchingWithOptions:方法的返回结果组合起来确定是否应处理URL。如果任一方法返回NO,则不处理URL。如果您没有实现其中一个方法,则仅考虑实现方法的返回值。
尽管有解释,我仍然不知道该如何操作,并且在网上找不到其他具体的信息。
谢谢!
敬礼!