【问题标题】:How to get back from web view after some action is done there?完成某些操作后如何从 Web 视图返回?
【发布时间】:2014-09-13 05:41:39
【问题描述】:

我正在我的应用程序中实现 CCAvenue 网关方式。 CCAvenue 网关从我的网站加载到 Web 视图中。

现在在成功/失败页面完成交易后,我如何才能知道并加载我的应用程序成功页面...... 请朋友们帮帮我

【问题讨论】:

  • 展示你自己解决这个问题的尝试。
  • 这与xcode IDE无关,所以请不要使用那个标签。

标签: objective-c uiwebview payment-gateway ccavenue


【解决方案1】:

最简单的方法是让您的网页使用自定义方案发送请求,例如 myapp://transactionSuccess 和您的应用在 webView 委托中处理此问题:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

    NSURL *URL = [request URL];
    if ([[URL scheme] isEqualToString:@"myapp"]) {
        // handle the response
        NSString *host = [URL host];
        if ([host isEqualToString:@"transactionSuccess"]) {
            // show your custom screen
            return NO;
        }
    }

    return YES;
}

【讨论】:

    【解决方案2】:

    Dan Spag 是正确的 - URL Schemes 使事情变得更容易管理和理解,但有时这些是不可能的。另一种方法是确保在成功/失败网页中,在 dom(或 HTML 正文响应)中设置响应状态,然后使用 stringByEvaluatingJavaScriptFromString 像这样在 iOS 中本地捕获该状态...

    - (void)webViewDidFinishLoad:(UIWebView *)webView {
        NSString *responseState = [webView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"];
     // or possibly a javascript property in the webview's loaded page if preferred.
    
       if([responseState isEqualToString:@"success"])
       {
           // do something with success
       } 
       else if([responseState isEqualToString:@"fail"]) {
          // do something with fail
       }
    
       [self.webView removeFromSuperView];
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-18
      • 2019-11-30
      • 2020-01-18
      • 2012-05-02
      • 1970-01-01
      • 1970-01-01
      • 2019-09-26
      • 1970-01-01
      相关资源
      最近更新 更多