'Firebase Plugins not Working on IOS (Ionic)

I am developing an Ionic App, and I am having some issues with the IOS App and Firebase/FCM Plugins.


The Android App is working perfectly with the below plugins installed:

ionic cordova plugin add cordova-plugin-fcm-with-dependecy-updated
npm install @ionic-native/fcm

As for the IOS App I tried several Plugins and none is working:

Option 1:

ionic cordova plugin add cordova-plugin-fcm
npm install @ionic-native/fcm

The app is building successfully, but it is failing when launched on an iPhone. When debugging, I am getting this error Message:

Terminating app due to uncaught exception 'com.firebase.core', reason: 'Configuration fails. It may be caused by an invalid GOOGLE_APP_ID in GoogleService-Info.plist or set in the customized options.'

Option 2:

ionic cordova plugin add cordova-plugin-fcm-with-dependecy-updated
npm install @ionic-native/fcm

When building with this plugin, I am getting the below error in xCode:

** ARCHIVE FAILED **


The following build commands failed:
        CompileC /Users/walid/Library/Developer/Xcode/DerivedData/Nutripro-aabwvacmftjwnefthwnyidfyxswx/Build/Intermediates.noindex/ArchiveIntermediates/Nutripro/IntermediateBuildFilesPath/Nutripro.build/Release-iphoneos/Nutripro.build/Objects-normal/arm64/FCMPlugin.o /Users/walid/Documents/www/nutripro/platforms/ios/Nutripro/Plugins/cordova-plugin-fcm-with-dependecy-updated/FCMPlugin.m normal arm64 objective-c com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)
xcodebuild: Command failed with exit code 65
[ERROR] An error occurred while running subprocess cordova.

I searched alot to find a solution for this error, and I can't find any.

Option 3:

ionic cordova plugin add cordova-plugin-firebase
npm install @ionic-native/firebase

I can build an App successfully using this plugin, and I can run it on my iPhone and a Token is generated and I can receive Push Notifications Normally. But the problem here is happening when Uploading the App to the App Store

  • Archiving on xCode is Successful
  • When Distributing/Uploading the App, I am getting the below Error:
ERROR ITMS-90771: "Missing Info.plist value. The Info.plist key 'BGTaskSchedulerPermittedIdentifiers' must contain a list of identifiers used to submit and handle tasks when 'UIBackgroundModes' has a value of 'processing'. For more information, refer to the Information Property List Key Reference at https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Introduction/Introduction.html."

I searched the Internet and found this article stating that I must add the below to my info.plist file

<key>BGTaskSchedulerPermittedIdentifiers</key>
<array>
    <string>com.nutripro.mobile</string>
</array>

After adding it and Resubmitting my Application, I am getting an email back from Apple

Dear Developer,

We identified one or more issues with a recent delivery for your app, "NutriPro" 1.1.11 (1.1.11). Please correct the following issues, then upload again.

ITMS-90809: Deprecated API Usage - New apps that use UIWebView are no longer accepted. Instead, use WKWebView for improved security and reliability. Learn more (https://developer.apple.com/documentation/uikit/uiwebview).

Best regards,

The App Store Team

If I remove the plugin, the App is being uploaded and approved.

The weird thing is that the documentation on @ionic-native/firebase says that they got rid of the UIWebView and are using WKWebView


N.B: After Each Option, I am uninstalling the installed Package and Node Module, and I am deleting the platforms folder.

Do you guys have any idea how I can fix this issue? I've been trying to figure out a solution for almost 1 week and I can't find any!



Solution 1:[1]

After a lot of research and unsuccessful attempts, I found a solution.

For Android, I am using fcm-with-dependecy-updated

ionic cordova plugin add cordova-plugin-fcm-with-dependecy-updated
npm install @ionic-native/fcm

For IOS, I am using firebase-messaging

ionic cordova plugin add cordova-plugin-firebase-messaging
npm install @ionic-native/firebase-messaging

Solution 2:[2]

I found a solution.

rm -rf platforms/android

cordova plugin remove cordova-plugin-firebase

Install this plugin firebase-lib

For cordova-cli >= 9.x.x && (cordava-ios >= 5.0.1 || cordava-android >= 8.x.x). Use the latest major releases just by running:

cordova plugin add cordova-plugin-firebase-lib

For cordova-cli <= 8.1.1 && (cordava-ios <= 4.5.5 || cordova-android >= 8.x.x) Use the v4.x release by running:

cordova plugin add [email protected] --save

For cordova-cli <= 7.1.0 && (cordava-ios <= 4.5.5 || cordova-android <= 7.1.4). Run the following in your terminal:

cordova plugin add [email protected] --save

Androidx

cordova plugin add cordova-plugin-androidx

cordova plugin add cordova-plugin-androidx-adapter

For cocoaPods

If you are building your app using Xcode, please open platform/ios/my-cordova-project.xcworkspace instead of platform/ios/my-cordova-project.xcodeproj so that the Xcode can load both Cordova app & the Pods. Your repo needs to be up to date. To keep it up to date, run pod repo update anywhere in your terminal.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Mario Rawady
Solution 2 Nitin Yadav