我正在尝试建立一个apk,它必须加载与离子4和电容的https://mydomain。在capacitor.config.json中,我精确地定义了这个字段:
"server" : {
"hostname": "mydomain"
}因为我在那个域中做了一些API调用。问题是,我希望我的应用程序在运行应用程序时加载https://mydomain,无论是在调试模式还是apk模式。
我甚至在capacitor.config.json中尝试过这样做
"server" : {
"hostname": "https://mydomain"
}但它只是调用了
http://https://mydomain当我运行应用程序时。所以它就一直在主机名上加"http://“”。
你知道我该怎么做才能让我的应用程序用https而不是http运行吗?
我正在使用ionic 4和电容器,目前我正在使用Android studio在Android平台上测试所有这些(但我会在IOS上使用同样的东西)。
谢谢
发布于 2019-04-16 21:11:11
发布于 2020-11-06 17:37:01
在capacitor.config.json中使用以下命令:
{
"hostname": "mydomain.com",
"androidScheme": "https"
}发布于 2021-04-14 16:59:48
在电容github https://github.com/ionic-team/capacitor/issues/3707#issuecomment-713360155上有一个有效的解决方案
重要提示:这应该仅用于调试,如果您将此代码留在生产版本中,您的应用程序可能会被拒绝。代码忽略了SSL错误,所以不应该出现在任何活动代码中。
对于Capacitor v3,我导入以下行:
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;然后在我的应用程序的MainActivity.java中向onStart()添加一个覆盖
@Override
public void onStart() {
super.onStart();
if (BuildConfig.DEBUG) {
this.bridge.getWebView().setWebViewClient(new BridgeWebViewClient(this.bridge) {
@Override
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
handler.proceed();
}
});
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
// Not implemented
}
@Override
public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
// Not implemented
}
}};
try {
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession session) { return true; } });
} catch (KeyManagementException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}对于捆绑电容器v2,这可能会起作用-但如果不能,代码可以从onStart()移动到onCreate(捆绑包savedInstanceState),在升级到v3之前我看到它在那里工作。
我使用以下命令从CLI运行
ionic capacitor run android -l --host=0.0.0.0 --consolelogs --external --sslhttps://stackoverflow.com/questions/55647572
复制相似问题