解决方案:找到InAppBrowserDownloads.java,而且做以下修改java
import android.webkit.CookieManager;
protected void processDownload() {
final String url = InAppBrowserDownloads.this.url;
final String cookie = CookieManager.getInstance().getCookie(url);
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
request.addRequestHeader("Cookie", cookie);
request.addRequestHeader("User-Agent", InAppBrowserDownloads.this.userAgent);
request.addRequestHeader("Referer", url);
try {
……
} catch (Exception exception) {
……
}
}
复制代码
解决方案:找到InAppBrowser.java,而且将以下注释去掉 说明:因为开启此特性会致使内置浏览器页面信息被劫持,故通常都会注释,仅供调试时开启android
//if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
// inAppWebView.setWebContentsDebuggingEnabled(true);
//}
复制代码
解决方案:ios
采用inappbower打开连接以解决,也就是window.open(url, method)web
解决方案:采用原生连接打开方式api
适用场景:app之内置浏览器的方式集成三方h5应用而且经过cookie传递用户信息时,开启属性后当第二次是用另外的帐号打开三方h5页面时候,就不会遇到三方应用中帐户信息仍是上一我的的状况浏览器
适用场景:当集成方不想暴露连接信息或者连接带有敏感信息时,应以无导航条方式打开cookie
适用场景:当集成方是pc页面时,此选项最好开启session
适用场景:该属性至关于enableViewportScale的拓展app
解决方案:提供一个sdk api以调用,简单的说就是利用回调ui
解决方案:不要打架,找双方老板和客户沟通改动的利益成本和所须要的资源以及面临的困境,通常来讲,集成方的代码都是针对pc端的,对移动端适配确定不友好,当对方集成到己方app中时,就应该考虑到移动适配的问题,以及可能须要配合改动的需求,若是集成方一味的甩锅,不要着急,把问题一五一十的告诉上级,合情合理的话,让经验丰富的产品和领导处理,不要接到锅立马就甩。
解决方案:找到CDVInAppBrowser.m,在didFailLoadWithError中将self.backButton.enabled置为YES
- (void)webView:(UIWebView*)theWebView didFailLoadWithError:(NSError*)error
{
BOOL isLantuCall = [self isLantuCall:error];
// log fail message, stop spinner, update back/forward
NSLog(@"webView:didFailLoadWithError - %ld: %@", (long)error.code, [error localizedDescription]);
//self.backButton.enabled = theWebView.canGoBack;
//将这里的返回强制容许
self.backButton.enabled = YES;
self.forwardButton.enabled = theWebView.canGoForward;
[self.spinner stopAnimating];
//self.addressLabel.text = NSLocalizedString(@"Load Error", nil);
//不想显示Load Error的话能够显示成Load Completed之类让用户体验更好,
//由于不是真正的加载失败,只是对target="_blank"跳转的处理存在问题
self.addressLabel.text = NSLocalizedString(@"Load Completed", nil);
[self.navigationDelegate webView:theWebView didFailLoadWithError:error];
}
复制代码