在 SFSafariViewController 中嵌入 Javascript

Posted

技术标签:

【中文标题】在 SFSafariViewController 中嵌入 Javascript【英文标题】:embedding Javascript in SFSafariViewController 【发布时间】:2016-01-26 19:51:00 【问题描述】:

我不确定这是否可能。我目前正在开发一个存储密码的应用程序(如密码管理器)。它的功能之一是允许用户自动登录到该设备的网络浏览器。我能够使用 UIWebView 和 WKWebView 使其工作,但找不到使用 SFSafariViewController 使其工作的方法。我阅读了一些关于它的文档和博客,甚至阅读了 SFSafariViewController.h,但那里没有任何线索可以引导我找到我想要的功能。我想知道如何在 SFSafariViewController 中执行类似“evaluatejavascript”的函数,或者如果不可能,你们对如何实现这一点还有其他建议吗?

注意:我使用的是 Objective-C。

提前致谢! 编码愉快!

【问题讨论】:

我认为这不可能——SFSafariViewControllerApple 不允许交互:“用户的活动和与 SFSafariViewController 的交互对您的应用不可见”(docs)。 有没有其他方法可以实现从应用到指定URL的自动登录?我正在考虑在我的服务器上放置一个 Web API,并在那里完成技巧并将其发布到我想要登录的站点的登录 URL。这可能吗? 您应该只使用UIWebViewWKWebView。如果你想用系统视图登录,你可以使用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 已禁用?

SFSafariViewController 详细信息

是否可以在 UITabBarController 内显示 SFSafariViewController?

在 SFSafariViewController 上设置完成按钮颜色

在 SFSafariViewController 中嵌入 Javascript

Android 相当于 iOS 的 SFSafariViewController