Проблема белого экрана IONIC с заставкой зависает при первой загрузке (iOS - ionic3) - PullRequest
0 голосов
/ 29 декабря 2018

Хорошо, я знаю, что есть много подобных проблем, но я столкнулся с немного другой.

На самом деле, когда я создаю свое приложение Ionic3 для iOS с использованием Xcode10, оно создается идеально, но когда приложение запускается в первый раз, оно показывает заставку в течение длительного времени, а затем белый экран остается на бесконечное время,но если я сверну приложение и снова открою его, я увижу, что все хорошо загружено и приложение работает нормально (я сталкиваюсь с этим как на симуляторе iOS, так и на устройстве).

Это происходит каждый раз, когда я запускаю приложение после закрытия его задачи.Но после его закрытия (чтобы не очистить задание) и повторного открытия он работает нормально, и белый экран исчезает.Хотя нет хорошего решения, связанного с белым экраном, и я попробовал почти все, но проблема все еще существует.Пожалуйста, помогите мне.

PS: одно и то же приложение отлично работает в Android как в отладочной, так и в производственной сборках (на симуляторе и на устройстве).

My package.json:

{
  "name": "newApp",
  "version": "0.0.1",
  "author": "Ionic Framework",
  "homepage": "http://ionicframework.com/",
  "private": true,
  "scripts": {
    "clean": "ionic-app-scripts clean",
    "build": "ionic-app-scripts build",
    "lint": "ionic-app-scripts lint",
    "ionic:build": "ionic-app-scripts build",
    "ionic:serve": "ionic-app-scripts serve"
  },
  "dependencies": {
    "@angular/common": "4.1.3",
    "@angular/compiler": "4.1.3",
    "@angular/compiler-cli": "4.1.3",
    "@angular/core": "4.1.3",
    "@angular/forms": "4.1.3",
    "@angular/http": "4.1.3",
    "@angular/platform-browser": "4.1.3",
    "@angular/platform-browser-dynamic": "4.1.3",
    "@ionic-native/app-version": "^4.13.0",
    "@ionic-native/core": "3.12.1",
    "@ionic-native/fcm": "^4.5.2",
    "@ionic-native/google-analytics": "^4.13.0",
    "@ionic-native/push": "4.0.1",
    "@ionic-native/splash-screen": "3.12.1",
    "@ionic-native/status-bar": "3.12.1",
    "@ionic/storage": "2.0.1",
    "@types/lodash": "^4.14.91",
    "cordova-android": "^7.1.3",
    "cordova-ios": "4.5.5",
    "cordova-plugin-app-version": "^0.1.9",
    "cordova-plugin-device": "^1.1.4",
    "cordova-plugin-google-analytics": "^1.8.6",
    "cordova-plugin-splashscreen": "^4.0.3",
    "cordova-plugin-statusbar": "^2.2.2",
    "cordova-plugin-whitelist": "^1.3.3",
    "datepicker-ionic2": "^2.6.2",
    "highcharts": "^4.2.6",
    "ion2-calendar": "^2.2.0",
    "ionic-angular": "3.6.1",
    "ionic-plugin-keyboard": "^2.2.1",
    "ionic-select-searchable": "^2.8.2",
    "ionicons": "3.0.0",
    "moment": "^2.22.2",
    "rxjs": "5.4.0",
    "sw-toolbox": "3.6.0",
    "zone.js": "0.8.12"
  },
  "devDependencies": {
    "@ionic/app-scripts": "2.1.4",
    "typescript": "2.3.4"
  },
  "description": "An Ionic project",
  "cordova": {
    "plugins": {
      "cordova-plugin-device": {},
      "cordova-plugin-splashscreen": {},
      "cordova-plugin-statusbar": {},
      "cordova-plugin-whitelist": {},
      "ionic-plugin-keyboard": {},
      "cordova-plugin-app-version": {},
      "cordova-plugin-google-analytics": {
        "GMS_VERSION": "11.0.1"
      }
    },
    "platforms": [
      "android",
      "ios"
    ]
  }
}

Мой config.xml:

<?xml version='1.0' encoding='utf-8'?>
<widget id="newApp" version="24.6.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>New App</name>
    <description>An Inventory App</description>
    <author email="prashantjain.pro@gmail.com" href="">Prashant Jain</author>
    <content src="index.html" />
    <access origin="*" subdomains="true" />
    <allow-navigation href="*" />
    <allow-intent href="*" />
    <allow-navigation href="http://ionic.local/*" />
    <allow-navigation href="*://*vimeo.com" />
    <allow-intent href="http://*/*" />
    <allow-intent href="https://*/*" />
    <allow-intent href="tel:*" />
    <allow-intent href="sms:*" />
    <allow-intent href="mailto:*" />
    <allow-intent href="geo:*" />
    <preference name="webviewbounce" value="false" />
    <preference name="UIWebViewBounce" value="false" />
    <preference name="DisallowOverscroll" value="true" />
    <preference name="android-minSdkVersion" value="16" />
    <preference name="BackupWebStorage" value="none" />
    <preference name="SplashMaintainAspectRatio" value="true" />
    <preference name="FadeSplashScreenDuration" value="300" />
    <preference name="SplashShowOnlyFirstTime" value="false" />
    <preference name="SplashScreen" value="screen" />
    <preference name="SplashScreenDelay" value="3000" />

    <preference name="AutohideSplashScreen" value="false" />
    <platform name="android">
        <allow-intent href="market:*" />
        <icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />
        <icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" />
        <icon density="hdpi" src="resources/android/icon/drawable-hdpi-icon.png" />
        <icon density="xhdpi" src="resources/android/icon/drawable-xhdpi-icon.png" />
        <icon density="xxhdpi" src="resources/android/icon/drawable-xxhdpi-icon.png" />
        <icon density="xxxhdpi" src="resources/android/icon/drawable-xxxhdpi-icon.png" />
        <splash density="land-ldpi" src="resources/android/splash/drawable-land-ldpi-screen.png" />
        <splash density="land-mdpi" src="resources/android/splash/drawable-land-mdpi-screen.png" />
        <splash density="land-hdpi" src="resources/android/splash/drawable-land-hdpi-screen.png" />
        <splash density="land-xhdpi" src="resources/android/splash/drawable-land-xhdpi-screen.png" />
        <splash density="land-xxhdpi" src="resources/android/splash/drawable-land-xxhdpi-screen.png" />
        <splash density="land-xxxhdpi" src="resources/android/splash/drawable-land-xxxhdpi-screen.png" />
        <splash density="port-ldpi" src="resources/android/splash/drawable-port-ldpi-screen.png" />
        <splash density="port-mdpi" src="resources/android/splash/drawable-port-mdpi-screen.png" />
        <splash density="port-hdpi" src="resources/android/splash/drawable-port-hdpi-screen.png" />
        <splash density="port-xhdpi" src="resources/android/splash/drawable-port-xhdpi-screen.png" />
        <splash density="port-xxhdpi" src="resources/android/splash/drawable-port-xxhdpi-screen.png" />
        <splash density="port-xxxhdpi" src="resources/android/splash/drawable-port-xxxhdpi-screen.png" />
    </platform>
    <platform name="ios">
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
        <icon height="57" src="resources/ios/icon/icon.png" width="57" />
        <icon height="114" src="resources/ios/icon/icon@2x.png" width="114" />
        <icon height="40" src="resources/ios/icon/icon-40.png" width="40" />
        <icon height="80" src="resources/ios/icon/icon-40@2x.png" width="80" />
        <icon height="120" src="resources/ios/icon/icon-40@3x.png" width="120" />
        <icon height="50" src="resources/ios/icon/icon-50.png" width="50" />
        <icon height="100" src="resources/ios/icon/icon-50@2x.png" width="100" />
        <icon height="60" src="resources/ios/icon/icon-60.png" width="60" />
        <icon height="120" src="resources/ios/icon/icon-60@2x.png" width="120" />
        <icon height="180" src="resources/ios/icon/icon-60@3x.png" width="180" />
        <icon height="72" src="resources/ios/icon/icon-72.png" width="72" />
        <icon height="144" src="resources/ios/icon/icon-72@2x.png" width="144" />
        <icon height="76" src="resources/ios/icon/icon-76.png" width="76" />
        <icon height="152" src="resources/ios/icon/icon-76@2x.png" width="152" />
        <icon height="167" src="resources/ios/icon/icon-83.5@2x.png" width="167" />
        <icon height="29" src="resources/ios/icon/icon-small.png" width="29" />
        <icon height="58" src="resources/ios/icon/icon-small@2x.png" width="58" />
        <icon height="87" src="resources/ios/icon/icon-small@3x.png" width="87" />
        <splash height="1136" src="resources/ios/splash/Default-568h@2x~iphone.png" width="640" />
        <splash height="1334" src="resources/ios/splash/Default-667h.png" width="750" />
        <splash height="2208" src="resources/ios/splash/Default-736h.png" width="1242" />
        <splash height="1242" src="resources/ios/splash/Default-Landscape-736h.png" width="2208" />
        <splash height="1536" src="resources/ios/splash/Default-Landscape@2x~ipad.png" width="2048" />
        <splash height="2048" src="resources/ios/splash/Default-Landscape@~ipadpro.png" width="2732" />
        <splash height="768" src="resources/ios/splash/Default-Landscape~ipad.png" width="1024" />
        <splash height="2048" src="resources/ios/splash/Default-Portrait@2x~ipad.png" width="1536" />
        <splash height="2732" src="resources/ios/splash/Default-Portrait@~ipadpro.png" width="2048" />
        <splash height="1024" src="resources/ios/splash/Default-Portrait~ipad.png" width="768" />
        <splash height="960" src="resources/ios/splash/Default@2x~iphone.png" width="640" />
        <splash height="480" src="resources/ios/splash/Default~iphone.png" width="320" />
        <splash height="2732" src="resources/ios/splash/Default@2x~universal~anyany.png" width="2732" />
        <icon height="1024" src="resources/ios/icon/icon-1024.png" width="1024" />
    </platform>
    <plugin name="cordova-plugin-device" spec="^1.1.4" />
    <plugin name="cordova-plugin-splashscreen" spec="^4.0.3" />
    <plugin name="cordova-plugin-statusbar" spec="^2.2.2" />
    <plugin name="ionic-plugin-keyboard" spec="^2.2.1" />
    <plugin name="cordova-plugin-app-version" spec="^0.1.9" />
    <plugin name="cordova-plugin-whitelist" spec="^1.3.3" />
    <plugin name="cordova-plugin-google-analytics" spec="^1.8.6">
        <variable name="GMS_VERSION" value="11.0.1" />
    </plugin>
    <engine name="android" spec="^7.1.3" />
    <engine name="ios" spec="4.5.5" />
</widget>

1 Ответ

0 голосов
/ 05 января 2019

Ну, я понял точную проблему.Это произошло из-за добавления и удаления плагинов при смене версий платформы iOS.Благодаря чему device doesn't get ready before loading plugins.

Чтобы решить эту проблему, убедитесь, что вы добавили последнюю платформу iOS.Затем начните удалять плагины один за другим, которые находятся в plugins folder.
. Чтобы удалить плагин, напишите:
ionic cordova plugin rm <plugin-name>

Если его модуль npm есть, удалите его.это также:
npm uninstall --save <plugin-name>

Убедитесь, что вы удалили все плагины таким образом.Затем обновите свой проект или очистите проект с помощью:
npm run clean

Затем снова начните добавлять плагины.Используйте:
ionic cordova plugin add <plugin-name>

npm install --save <plugin-name>

После этого просто соберите проект снова, используя:
ionic cordova build android --prod

И все будет работать нормально,:)

PS: Если при сборке возникает какая-то проблема, например, version 4 present, expected 3, то это означает, что ваш проект создан для ionic3, поэтому в этом случае вам, возможно, придется изменить @ionic-native/core и rxjs версии, а затем придется изменить version from 4 to 3 in every metadata file in node_modules/@ionic-native.

Надеюсь, это решит вашу проблему:)

...