Safariviewcontroller在打开另一个应用程序时重新加载内容,然后返回

时间:2016-11-13 08:27:13

标签: ios objective-c reload wkwebview sfsafariviewcontroller

我正在尝试使用sfsafariviewcontroller实现SSO方案。情景如下。

  1. 用户打开应用程序,登录页面显示在wkwebview
  2. 用户点击登录按钮,然后safariviewcontroller打开SSO页面。
  3. 用户输入用户名和密码,然后按SSO页面中的登录按钮。
  4. 对于两步验证,用户在下一个SSO页面输入一个SMS-pin并按下完成按钮。
  5. 验证完成后,用户将自动返回授权状态。
  6. 问题出在第4步。当用户打开消息以获取SMS-pin并返回应用程序时,sfsafariviewcontroller将使用初始URL重新加载页面。因此用户无法进入SMS-pin。

    为什么SfSafariViewController每次都会使用初始网址重新加载页面?

    实施如下。

    @interface WebContentViewController()<SFSafariViewControllerDelegate>
    ...
    @end
    
    @implementation WebContentViewController
    
    ...
    ...
    
    - (BOOL)decideNavigationFlow:(NSURL *) url isLinkClicked: (BOOL) isLinkClicked {
    ....
    ....
     if(IS_IOS9_OR_GREATER){
                SFSafariViewController *svc = [[SFSafariViewController alloc] initWithURL:url];
             [self presentViewController:svc animated:YES completion:nil];
    
            }
    }
    
    -(void)safariViewController:(SFSafariViewController *)controller didCompleteInitialLoad:(BOOL)didLoadSuccessfully {
        LogInfo(@"#######Initial load completed");
    }
    
    -(void)safariViewControllerDidFinish:(SFSafariViewController *)controller {
        LogInfo(@"#######Done pressed");
    }
    @end
    

0 个答案:

没有答案