在 SFSafariViewController 中嵌入 Javascript
Posted
技术标签:
【中文标题】在 SFSafariViewController 中嵌入 Javascript【英文标题】:embedding Javascript in SFSafariViewController 【发布时间】:2016-01-26 19:51:00 【问题描述】:我不确定这是否可能。我目前正在开发一个存储密码的应用程序(如密码管理器)。它的功能之一是允许用户自动登录到该设备的网络浏览器。我能够使用 UIWebView 和 WKWebView 使其工作,但找不到使用 SFSafariViewController 使其工作的方法。我阅读了一些关于它的文档和博客,甚至阅读了 SFSafariViewController.h,但那里没有任何线索可以引导我找到我想要的功能。我想知道如何在 SFSafariViewController 中执行类似“evaluatejavascript”的函数,或者如果不可能,你们对如何实现这一点还有其他建议吗?
注意:我使用的是 Objective-C。
提前致谢! 编码愉快!
【问题讨论】:
我认为这不可能——SFSafariViewController
Apple 不允许交互:“用户的活动和与 SFSafariViewController 的交互对您的应用不可见”(docs)。
有没有其他方法可以实现从应用到指定URL的自动登录?我正在考虑在我的服务器上放置一个 Web API,并在那里完成技巧并将其发布到我想要登录的站点的登录 URL。这可能吗?
您应该只使用UIWebView
或WKWebView
。如果你想用系统视图登录,你可以使用AFNetworking
向你的服务器发送一个POST请求。
是的,我试过了,甚至成功了。但是我的客户希望它在登录后打开 Safari。有可能吗?
是的!只需致电[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"your URL here"]]
。
【参考方案1】:
SFSafariViewControllers
被沙盒化。因为它们本质上是 Safari,并且可以访问 cookie。允许任何应用访问这些将是一个安全风险。
但是,如果您希望用户登录的网络服务是您的,您可以设置 API 和自定义 URL 方案。
Follow this documentation.
如果您尝试从您不维护的网站存储密码等,那么很遗憾,使用SFSafariViewController
是不可能的。
希望这会有所帮助,
利亚姆
【讨论】:
非常感谢您的回答。我稍后会检查一下。 :)以上是关于在 SFSafariViewController 中嵌入 Javascript的主要内容,如果未能解决你的问题,请参考以下文章
FBSDK 登录 - SFSafariViewController 已禁用?
是否可以在 UITabBarController 内显示 SFSafariViewController?
在 SFSafariViewController 上设置完成按钮颜色