Ionic 4 IOS Firebase/Google login issue

I have an issue with the iOS version where the Google login just crashes and closes the app and the Firebase Authentication does nothing, however this works perfectly fine on the Android version, so the issue is specific to iOS.

I am using (cordova-plugin-googleplus) for the google login and (cordova-plugin-firebase-authentication) for the Firebase Authentication.

The only error I am getting is from the Google login:
-[__NSDictionaryI gtm_httpArgumentsString]: unrecognized selector sent to instance 0x600002f2c340

Items we have tried in order to resolve this problem:

  • updated both plugins
  • checked that the info.plist file is all in order
  • The “REVERSED_CLIENT_ID” and “WEB_APPLICATION_CLIENT_ID” is added to the cordova-plugin-googleplus plugin
  • CocoaPods is all updated
  • Clean out XCode
  • Remove and re added IOS platform
  • IOS Certificate is up to date

ionic info

Ionic:

   Ionic CLI                     : 5.4.1 (/usr/local/lib/node_modules/ionic)
   Ionic Framework               : @ionic/angular 4.9.1
   @angular-devkit/build-angular : 0.13.9
   @angular-devkit/schematics    : 7.3.9
   @angular/cli                  : 7.3.9
   @ionic/angular-toolkit        : 1.5.1

Cordova:

   Cordova CLI       : 9.0.0 (cordova-lib@9.0.1)
   Cordova Platforms : ios 5.0.1
   Cordova Plugins   : cordova-plugin-ionic-keyboard 2.2.0, cordova-plugin-ionic-webview 4.1.2, (and 16 other plugins)

Utility:

   cordova-res : 0.6.0 
   native-run  : 0.2.8 

System:

   ios-deploy : 1.9.4
   ios-sim    : 8.0.2
   NodeJS     : v10.16.0 (/usr/local/bin/node)
   npm        : 6.11.3
   OS         : macOS Mojave
   Xcode      : Xcode 10.3 Build version 10G8

> cordova plugin ls
cordova-plugin-advanced-http 2.1.1 "Advanced HTTP plugin"
cordova-plugin-androidx 1.0.2 "cordova-plugin-androidx"
cordova-plugin-androidx-adapter 1.1.0 "cordova-plugin-androidx-adapter"
cordova-plugin-camera 4.1.0 "Camera"
cordova-plugin-device 2.0.3 "Device"
cordova-plugin-file 6.0.2 "File"
cordova-plugin-firebase-authentication 3.0.0 "cordova-plugin-firebase-authentication"
cordova-plugin-firebasex 6.1.0 "Google Firebase Plugin"
cordova-plugin-geolocation 4.0.2 "Geolocation"
cordova-plugin-googleplus 7.0.2 "Google SignIn"
cordova-plugin-ionic-keyboard 2.2.0 "cordova-plugin-ionic-keyboard"
cordova-plugin-ionic-webview 4.1.2 "cordova-plugin-ionic-webview"
cordova-plugin-network-information 2.0.2 "Network Information"
cordova-plugin-splashscreen 5.0.3 "Splashscreen"
cordova-plugin-statusbar 2.4.3 "StatusBar"
cordova-plugin-whitelist 1.3.4 "Whitelist"
cordova-plugin-x-socialsharing 5.6.0 "SocialSharing"
es6-promise-plugin 4.2.2 "Promise"
phonegap-plugin-barcodescanner 8.1.0 "BarcodeScanner"

config.xml

    <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="orientation" value="portrait" />
    <preference name="ScrollEnabled" value="false" />
    <preference name="android-minSdkVersion" value="19" />
    <preference name="BackupWebStorage" value="none" />
    <preference name="SplashMaintainAspectRatio" value="true" />
    <preference name="FadeSplashScreenDuration" value="500" />
    <preference name="SplashShowOnlyFirstTime" value="false" />
    <preference name="SplashScreen" value="screen" />
    <preference name="SplashScreenDelay" value="9000" />
    <preference name="FadeSplashScreen" value="true" />
    <preference name="AutoHideSplashScreen" value="true" />
    <preference name="AllowInlineMediaPlayback" value="true" />
    <platform name="android">
        <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
            <application android:networkSecurityConfig="@xml/network_security_config" />
        </edit-config>
        <resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
        <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-navigation href="about:*" />
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
        <config-file parent="NSCameraUsageDescription" platform="ios" target="*-Info.plist">
            <string>We make use of the camera to allow a user take a photo for their profile picture. We also use the camera for barcode scanning.</string>
        </config-file>
        <edit-config file="*-Info.plist" mode="merge" target="NSLocationWhenInUseUsageDescription">
            <string>We require geo-location data from the user, to show them which Reverse Vending Machines are closest to them, allowing the user to find them quickly, in order to recycle. The app makes use of the cordova-plugin-geolocation plugin.</string>
        </edit-config>
        <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>
    <plugin name="cordova-plugin-whitelist" spec="1.3.3" />
    <plugin name="cordova-plugin-statusbar" spec="2.4.2" />
    <plugin name="cordova-plugin-device" spec="2.0.2" />
    <plugin name="cordova-plugin-splashscreen" spec="5.0.2" />
    <plugin name="cordova-plugin-ionic-webview" spec="^4.0.0" />
    <plugin name="cordova-plugin-ionic-keyboard" spec="^2.0.5" />

If you have any help/pointers or tips, please can you assist.
Thank you in advance.

1 Like

Hello,

So to understand your issue, are you saying that the user is able to login but the authentication isn’t working 100%?

Was this also working previously and then stopped working properly (the Firebase Authentication)?

Hi,

Yes, something is causing the Firebase authentication and Firebase Google login to break. The Firebase authentication and Firebase Google login did work previously.

Just to note, I am also using FirebaseX for the push notifications and that works fine on Android and IOS.