首页 > 解决方案 > ionic ios build 在 ios 上工作时出错

问题描述

我在 ionic 版本 3 应用程序上工作我想将它发布到苹果商店我成功构建它但是何时提交它以审查应用程序被拒绝,因为

在通过 Wi-Fi 运行 iOS 13.7 的 iPad 上查看时,我们在您的应用程序中发现了一个或多个错误。您的应用程序启动并显示无响应的白屏,没有其他内容。

然后我开始了一个新的 ionic 3 项目,我遇到了同样的问题。我尝试使用 Cordova ios v6 和 v5 构建,但我遇到了同样的问题。我使用这些命令构建它

ionic cordova platform add ios
ionic cordova run ios --prod -l --external --emulator --consolelogs --target="C62C1D15-1BDF-433C-BD72-2D9957C5F0F7"

当我在 iPhone 模拟器上运行它时它运行良好但在 iPad 上给我这些问题

[app-scripts] [00:02:36]  console.warn: Ionic Native: tried calling StatusBar.styleDefault, but Cordova is not available. Make sure to 
[app-scripts]             a) run in a real device or simulator and b) include cordova.js in your index.html 
[app-scripts] [00:02:36]  console.warn: Ionic Native: tried calling SplashScreen.hide, but Cordova is not available. Make sure to a) 
[app-scripts]             run in a real device or simulator and b) include cordova.js in your index.html

使用

科尔多瓦 v10.0.0

离子cli v6.11.0

标签: ioscordovaionic-frameworkionic3

解决方案


插件使用平台的本机代码。为了执行该代码,他们依赖于 Cordova。在加载 Cordova 之前执行插件代码时会抛出错误消息“Cordova 不可用”。

您应该确保所有与插件相关的代码仅在加载后才执行。您可以通过订阅平台就绪事件并仅在触发后执行插件代码来做到这一点。这方面的一个例子是 import { Platform } from 'ionic-angular';

@Component({...})
export MyApp {
  constructor(public plt: Platform) {
    this.plt.ready().then((readySource) => {
      console.log('Platform ready from', readySource);
      // Platform now ready, execute any required native code
    });
  }
}

推荐阅读