一个UIWebView在Safari启动(UIWebView Launch in Safari)

2019-10-18 15:41发布

我知道,这已经带来了许多次,并回答了两倍多在这个网站,但我想我可能有东西有点不同,需要知道它是否是可能的。

我试图从一个网站的横幅广告加载到应用一个UIWebView。 所有这一切都完美的作品。 然而不管我试图实现哪些代码我无法得到它,这样点击应用中的广告时,它会在Safari推出。

基本上我想有我自己的广告服务器。 该广告管理广告托管在我们的网站。 它设有由服务器嵌入到它的链接。

这里是我使用的代码。

- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

    NSString *string;
    string = @"http://www.samplesite.com/mobile_ads";
    NSURL *url = [NSURL URLWithString: string];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [self.adBox loadRequest:requestObj];
}

-(BOOL) adBox:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest    navigationType:(UIWebViewNavigationType)inType {
if ( inType == UIWebViewNavigationTypeLinkClicked ) {
    [[UIApplication sharedApplication] openURL:[inRequest URL]];
    return NO;
}

return YES;
}

在那里我应该去什么想法?

Answer 1:

在您的UIWebViewDelegatewebView:shouldStartLoadWithRequest:navigationType:方法,像做以下(假设你的广告有其URL识别的部分):

- (void)methodThatCreatesTheWebview {
  UIWebView *webview = [[UIWebView alloc] init];
  webview.delegate = self;
}


// Portion of the URL that is only present on ads and not other URLs.
static NSString * const kAd = @"adSubdominOrSubDirectory";

// pragma mark - UIWebViewDelegate Methods

- (BOOL)webView:(UIWebView *)webView
    shouldStartLoadWithRequest:(NSURLRequest *)request
                navigationType:(UIWebViewNavigationType)navigationType
{
  if ([request.URL.absoluteString rangeOfString:kAd] !=  NSNotFound) {
    // Launch Safari to open ads
    return [[UIApplication sharedApplication] openURL:request.URL];
  } else {
    // URL isn't an ad, so just load it in the webview.
    return YES;
  }
}


文章来源: UIWebView Launch in Safari