在ios的safari中共享一个链接到我的应用程序?

我需要有关此问题的帮助。

我的应用程序中有一个function可以与其他用户共享链接,我需要做的是:

  1. 在safari浏览器中打开任何链接
  2. 直接在safari浏览器上执行一些操作以在我的应用程序中共享该链接。

这是否可以在iOS中直接共享从浏览器到应用程序的链接。

需要帮助。

问候。

从iOS 8开始使用Share App Extension可以完成此任务

我设法通过创建共享扩展应用程序(文件 – >新建 – >目标 – >应用程序扩展)来实现

在此处输入图像描述

然后从Targets-> Info我指定了对Web URL的支持

在此处输入图像描述

然后我花时间搜索在应用程序扩展中使用原始应用程序文件的方法,这篇文章帮助了我很多原始iOS应用程序和应用程序扩展之间的共享代码

如果您正在使用cocoapods,这也可以帮助您https://stackoverflow.com/a/31989172/3033056但请注意,并非所有pod都可以在app扩展中使用

这是一个教程的链接http://www.appcoda.com/ios8-share-extension-swift/

使用URL Schemes确实可以实现这一点http://mobile.tutsplus.com/tutorials/iphone/ios-sdk-working-with-url-schemes/

  1. 查看发件人示例
  2. 见接收器示例

iOS自定义url方案:

html示例:

Run the appiPhone/iPad

CFBundleURLSchemes – 包含URL方案名称的字符串数组 – 例如,http,mailto,tel和sms。

BundleURLName – 包含URL方案的抽象名称的字符串。 为确保唯一性,建议您指定反向DNS样式的标识符,例如com.acme.myscheme。 您指定的字符串也将用作应用程序的InfoPlist.strings文件中的键。 密钥的值是人类可读的方案名称。

通过Apple的文档:实现自定义URL方案

如果您的应用可以接收特殊格式的URL,则应在系统中注册相应的URL方案。 customURL方案是第三方应用程序可以相互通信的机制。 应用程序通常使用自定义URLchemes将服务销售给其他应用程序。 例如,地图应用支持用于显示特定地图位置的url。

注册自定义URL方案

要为您的应用注册URL类型,请在应用的Info.plist文件中包含CFBundleURLTypes键。 CFBundleURLTypes键包含一个字典数组,每个字典都定义了应用程序支持的URL方案。

在你的AppDelegate中:

 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { NSString *query = [url query]; // NSLog(@"query->%@",query);//param=1 // NSLog(@"host->%@",host);//BundleURLName // NSLog(@"resourceSpecifier->%@",resourceSpecifier);//BundleURLName?param=1 if(![[url scheme] isEqualToString:@"BundleURLSchemes"]) return NO; else{ NSArray* paramsData =[query componentsSeparatedByString:@"="]; NSLog(@"param->%@", paramsData[1]); } return YES; } 

您可以通过应用程序URL内的查询轻松地从safari将数据传递到您的应用程序。 即您的应用程序URL是scheme://host/path?Query查询是哪些数据可以自定义和解析。 此URL传递给application:handleOpenURL 。 有关它的更多信息,请访问http://www.idev101.com/code/Objective-C/custom_url_schemes.html