自定义URL方案IOS

时间:2014-08-28 13:17:50

标签: ios objective-c cocoa url-scheme info.plist

我有一个应用程序,它将从我的其他应用程序启动。但我的目的是启动我的应用程序,不对URL做任何事情。它只是一种使用户无需任何数据交换即可在应用程序之间切换的方法。

我是否需要实现handleOpenURL或类似的方法来处理URL以过滤掉Secure Coding guidelines中不需要的命令,例如苹果提及,或者只是在info.plist中指定方案(以及URL标识符)考虑到我没有对URL做任何事情这个事实,并且作为Viewer的文档角色是足够安全的?

1 个答案:

答案 0 :(得分:5)

是的,您需要实施application:handleOpenURL: application:openURL:sourceApplication:annotation:,然后返回YES。根据Apple的文档,第二种方法是首选。

-(BOOL) application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
  return YES;
}

您还可以检查方案,源应用程序或其他条件,并相应地返回YES或NO。如果您有多个应用程序正在通信,则可以检查源应用程序或使用注释传递数据。

NSString* myappScheme = @"anindya";  // or even better read it from your plist
-(BOOL) application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
  return [url.scheme isEqualToString: myappScheme];
}

就安全性而言,你并没有真正对URL做任何其他事情,所以没有问题。 Apple在这方面的建议意味着如果你从另一个应用程序获得一个URL,你必须仔细解析它并假设它可能是恶意的。如果您还检查了源应用程序,则可以确保只从您自己的应用程序中获取数据。