ionic 发布release版本包https请求无法连接debug版本可以正常请求--解决方案

ionic测试时一直使用ionic build android/ios发布debug包,一切正常;上线当天打release包后一直提示网络连接错误,debug版本和release版本的程序代码是完全一致的,区别也只在于release版本多了签名,这和http请求应该没关系的,经查询得知,在debug模式下会跳过证书的认证,这时候http请求是没问题的,但是release版本就会进行认证,这和PC端的道理其实是一样的,证书无效或者未认证会提示是否还要进行访问,但是使用ajaix进行http请求无法看到提示信息导致连接一直失败。
修改方案:
对于IOS来说:

修改webstrom 工程platforms-->MyApp-->AppDelegate.m-->在末尾追加如下代码:
	@implementation NSURLRequest(DataController)
    + (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host
    {
     return YES;
    }
   @end

对于Android来说:

修改 \platforms\android\CordovaLib\src\org\apache\cordova\engine\SystemWebViewClient 文件里的 onReceivedSslError 函数,原函数如下:
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {

        final String packageName = parentEngine.cordova.getActivity().getPackageName();
        final PackageManager pm = parentEngine.cordova.getActivity().getPackageManager();

        ApplicationInfo appInfo;
        try {
            appInfo = pm.getApplicationInfo(packageName, PackageManager.GET_META_DATA);
            if ((appInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0) {
                // debug = true
                handler.proceed();
                return;
            } else {
                // debug = false
                super.onReceivedSslError(view, handler, error);
            }
        } catch (NameNotFoundException e) {
            // When it doubt, lock it out!
            super.onReceivedSslError(view, handler, error);
        }
    }
    修改为如下即可:
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
        handler.proceed();
    }

修改完成重新打包,亲测可用。打包时使用ionic build android --release --prod添加–prod能够优化APP启动速度,一点小建议。

在网上还看到有人说这个网络问题是由于cordova造成的,原因是没有添加白名单插件,使用cordova plugin ls 进行查看是否存在cordova-plugin-whitelist这个插件,如果存在则使用cordova plugin remove cordova-plugin-whitelist卸载之后再重新安装即可cordova plugin add cordova-plugin-whitelist
这也是可能的原因之一,但是这只是针对很老的cordova平台而言,目前基本使用的都是5.0以上的会自动包含此插件,也做个参考吧,有可能在操作插件时不经意间把白名单插件卸载了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值