Hi
I am using ionic-v3 and angular 4
Everything works fine on android but there is one problem i am getting on IOS device ( Iphone X ).
Problem:
Starting of app works fine but as soon as i click on login screen and make Auth request to login in to the app. The screen just freezes there.
It works fine for every other page but don’t know what’s the problem with login API hit.
And then when i crash the app and open it again it opens without any problem showing the home screen there.
Please help me with the solution as i have to deliver my app to the client.
Config.xml
<name>BB</name>
<description>An awesome Ionic/Cordova app.</description>
<author email="hi@ionicframework" href="http://ionicframework.com/">Ionic Framework Team</author>
<content src="index.html" />
<access origin="*" />
<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="ScrollEnabled" value="false" />
<preference name="orientation" value="portrait" />
<preference name="android-minSdkVersion" value="16" />
<preference name="BackupWebStorage" value="none" />
<preference name="SplashMaintainAspectRatio" value="true" />
<preference name="FadeSplashScreenDuration" value="0" />
<preference name="FadeSplashScreen" value="true" />
<preference name="SplashShowOnlyFirstTime" value="false" />
<preference name="SplashScreen" value="screen" />
<preference name="SplashScreenDelay" value="2000" />
<preference name="ShowSplashScreen" value="true" />
<preference name="AutoHideSplashScreen" value="false" />
<preference name="ShowSplashScreenSpinner" value="false" />
<platform name="android">
<preference name="loadUrlTimeoutValue" value="700000" />
<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" />
<icon height="1024" src="resources/ios/icon/icon-1024.png" width="1024" />
<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" />
</platform>
<allow-navigation href="http://192.168.3.196:8100" />
<plugin name="cordova-plugin-device" spec="^1.1.7" />
<plugin name="cordova-plugin-whitelist" spec="^1.3.3" />
<plugin name="ionic-plugin-keyboard" spec="^2.2.1" />
<plugin name="cordova-plugin-statusbar" spec="^2.4.1" />
<plugin name="com.telerik.plugins.nativepagetransitions" spec="^0.6.5" />
<plugin name="cordova-plugin-camera" spec="^4.0.2" />
<plugin name="cordova-plugin-file" spec="^6.0.1" />
<plugin name="cordova-plugin-ios-camera-permissions" spec="^1.2.0">
<variable name="CAMERA_USAGE_DESCRIPTION" value="Allow Bargain Booze to access your camera" />
<variable name="PHOTOLIBRARY_ADD_USAGE_DESCRIPTION" value="Allow Bargain Booze to access your gallery" />
<variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="Allow Bargain Booze to access your gallery" />
<variable name="MICROPHONE_USAGE_DESCRIPTION" value="This app needs microphone access" />
</plugin>
<plugin name="cordova-plugin-x-socialsharing" spec="^5.3.2" />
<plugin name="cordova-plugin-network-information" spec="^2.0.1" />
<plugin name="phonegap-plugin-barcodescanner" spec="^7.1.2">
<variable name="ANDROID_SUPPORT_V4_VERSION" value="27.+" />
</plugin>
<plugin name="cordova-plugin-splashscreen" spec="^5.0.2" />
<plugin name="cordova-plugin-facebook4" spec="^2.1.0">
<variable name="APP_ID" value="171503153514838" />
<variable name="APP_NAME" value="Bargain_Booze" />
<variable name="ANDROID_SDK_VERSION" value="4.+" />
</plugin>
<plugin name="cordova-base64-to-gallery" spec="^4.1.3" />
<plugin name="cordova-plugin-file-transfer" spec="^1.7.1" />
<plugin name="cordova-plugin-local-notification" spec="https://github.com/katzer/cordova-plugin-local-notifications.git" />
<plugin name="cordova-plugin-ionic-webview" spec="^1.2.1" />
<allow-navigation href="http://192.168.3.248:8101" />
<allow-navigation href="http://192.168.3.248:8100" />
<engine name="android" spec="^6.4.0" />
<engine name="ios" spec="4.5.4" />
Auth request (Effect)
@Effect({ dispatch: false })
login: Observable = this.actions$
.ofType(auth.actionTypes.AUTH_LOGIN)
.do((action: authActions) => {
this.loader.show();
this.UserService.login(action.payload).subscribe((result) => {
console.log(result);
if (result.statusCode === 200) {
console.log(‘success’);
this.loader.hide();
localStorage.setItem(‘token’, result.data.token);
localStorage.setItem(‘isVerified’, result.data.contacts[0].isVerified);
localStorage.setItem(‘tokenSession’, JSON.stringify(result.data.token));
localStorage.setItem(‘currentUser’, JSON.stringify(result.data));
this.store.dispatch(new auth.AuthLoginSuccessAction(result));
}
}
, (error) => {
if (error.message) {
this.loader.hide();
this.store.dispatch(new auth.AuthLoginErrorAction(error.message));
this.ErrorMessage(error.message);
}
}
);
});
Handling of store for this auth request:
ngOnInit() {
this.authStore = this.store.select(‘auth’).subscribe((result) => {
console.log(result, ‘result’);
if (result.loginSuccess) {
if (result.loginSuccess.data.contacts[0].isVerified) {
this.nativePageTransitions.fade(null);
this.navCtrl.setRoot(HomeScreenPage);
}
else if (!result.loginSuccess.data.contacts[0].isVerified) {
this.nativePageTransitions.fade(null);
this.navCtrl.push(OtpScreenPage, { number: result.loginSuccess.data.contacts[0].mobile });
}
}
});
}