web-dev-qa-db-ja.com

Firebaseプラグインが機能しないIOS(Ionic)

Ionicアプリを開発していますが、IOSアプリとFirebase/FCMプラグインに問題があります。


Android Appは、インストールされている以下のプラグインで完全に動作しています。

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

IOS Appについては、いくつかのプラグインを試しましたが、どれも機能していません。

オプション1:

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

アプリは正常にビルドされていますが、iPhoneで起動すると失敗します。デバッグすると、次のエラーメッセージが表示されます。

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.'

オプション2:

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

このプラグインでビルドすると、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.

このエラーの解決策を見つけるためにたくさん検索しましたが、何も見つかりません。

オプション3:

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

このプラグインを使用してアプリを正常に構築でき、iPhoneで実行できます。トークンが生成され、通常はプッシュ通知を受信できます。しかし、App Storeにアプリをアップロードすると、ここで問題が発生します

  • XCodeでのアーカイブは成功
  • アプリを配布/アップロードすると、次のエラーが発生します:
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."

私はインターネットを検索しました この記事 を以下を私のinfo.plistファイルに追加する必要があると述べています

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

追加してアプリケーションを再送信すると、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

プラグインを削除すると、アプリがアップロードされ、承認されます。

奇妙なことに、@ ionic-native/firebaseのドキュメントには、UIWebViewを削除してWKWebViewを使用していると記載されています


NB:各オプションの後、インストールされたパッケージとNode Moduleをアンインストールし、プラットフォームフォルダを削除します。

どうすればこの問題を解決できるか考えていますか?約1週間、解決策を見つけようとしていましたが、何も見つかりません!

2
Mario Rawady

多くの研究と失敗した試みの後、私は解決策を見つけました。

Androidの場合、私は fcm-with-dependecy-updated を使用しています

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

IOSの場合、私は firebase-messaging を使用しています

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