SFSafariViewController和Javascript

时间:2017-01-16 10:06:33

标签: javascript ios sfsafariviewcontroller

我正在开发IOS应用程序,我在SFSafariViewController中打开登录页面。在登录成功登录页面时,会生成Json响应。

我想获得该响应并关闭SFSafariViewController。

在android中我通过Javascript和Javascript界面​​实现了它。

我的服务器端代码:

<?php
//curl initialize
//Some code
//Curl Execution
$response = curl_exe($ch)
?>
<script>
showAndroidToast("<?php echo $response;?>");
function showAndroidToast(res){
Android.dataResponse(res);
}
</script>

在android。

Android.dataResponse(res)是我添加到我的Chrome自定义标签(https://developer.chrome.com/multidevice/android/customtabs)的javascript界面​​。

我想要我的IOS应用程序的类似功能。我不知道。是否可以使用SFSafariViewController?

1 个答案:

答案 0 :(得分:1)

根据this StackOverflow回答,您无法下载SFSafariViewController的文件。此外,根据Apple's documentation

,似乎没有委托开始下载JSON

根据这些信息,我非常确定你最安全的选择是走WKWebView路线,即使WebKit在iOS上有各种各样的限制。您可以使用this作为起点。

个人只需调用我的登录API并创建一个本机登录表单,从而完全绕过Apple的浏览选项。我希望这有帮助!

修改

OP实际上正在使用FitBit的API和OAuth2,并且根据FitBit的文档:

  

对于本机应用程序,这意味着授权页面必须在默认浏览器中打开。本机应用程序可以使用自定义URL方案作为重定向URI,以将用户从浏览器重定向回请求权限的应用程序。 iOS应用程序可能使用SFSafariViewController类而不是应用程序切换到Safari。禁止使用WKWebView或UIWebView类。

使用FitBit的授权代码授权流程的指针可在their documentation中找到,但没有正确的指南。但OAuthSwift支持FitBit,因此这可能是实现登录的最简单方法。还可以找到有关示例集成的讨论herehere