我需要有关此问题的帮助。
我的应用程序中有一个功能可以与其他用户共享链接,我需要做的是:
- 在 Safari 浏览器中打开任何链接
- 直接在 Safari 浏览器上执行一些操作以在我的应用程序中共享该链接。
这是否可以在 iOS 中直接共享从浏览器到应用程序的链接。
需要这方面的帮助。
问候。
从 iOS 8 开始使用 Share App Extension可以实现这个任务
我设法通过创建一个共享扩展应用程序来做到这一点(文件->新建->目标->应用程序扩展)
然后从 Targets->Info 我指定了对 Web URL 的支持
然后我花时间寻找在应用程序扩展中使用原始应用程序文件的方法,这篇文章帮助了我很多在原始 iOS 应用程序和应用程序扩展之间共享代码
如果您使用的是 cocoapods,这也可以帮助您https://stackoverflow.com/a/31989172/3033056但请注意,并非所有 pod 都允许在应用程序扩展中使用
这确实可以使用 URL 方案 http://mobile.tutsplus.com/tutorials/iphone/ios-sdk-working-with-url-schemes/
iOS 自定义 url 方案:
html 示例:
<p>Run the app<a href='BundleURLSchemes://BundleURLName?param=1'>iPhone/iPad</a></p>
CFBundleURLSchemes
- 包含 URL 方案名称的字符串数组,例如 http、mailto、tel 和 sms。
BundleURLName
- 包含 URL 方案的抽象名称的字符串。为确保唯一性,建议您指定反向 DNS 样式的标识符,例如 com.acme.myscheme。您指定的字符串也用作应用程序的 InfoPlist.strings 文件中的键。键的值是人类可读的方案名称。
通过 Apple 的文档:Implementing Custom URL Schemes
如果您的应用可以接收特殊格式的 URL,则应向系统注册相应的 URL 方案。customURL 方案是一种机制,第三方应用程序可以通过该机制相互通信。应用程序经常使用自定义 URLschemes 向其他应用程序提供服务。例如,地图应用程序支持用于显示特定地图位置的 URL。
注册自定义 URL 方案
要为您的应用注册 URL 类型,请将CFBundleURLTypes
密钥包含在您的应用Info.plist
文件中。该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