Android - バックグラウンドまたは強制終了状態で通知が動作しないのはなぜですか?
Android ネイティブの Application クラスで、MoEngage SDK がメインスレッドで初期化されていることを確認してください。
初期化のサンプルコード - GitHub
Android - バックグラウンドまたは強制終了状態でコールバックが動作しないのはなぜですか?
MoEngage のコールバックは app.js または app.ts に登録する必要があり、設定後に MoEngage プラグインの initialize () メソッドを呼び出す必要があります。詳細については、こちら をご覧ください。
コールバックのサンプルコード - GitHub
Android - アプリ内メッセージ/ナッジのディープリンクが動作しないのはなぜですか?
MoEngage SDK は、リッチランディングページを除き、デフォルトではアプリ内のリダイレクトを処理しません。こちらのドキュメントを参照してください。app.ts または app.js にアプリ内クリックのコールバックメソッドを実装し、コールバックを登録した後に moengage プラグインの initialise() メソッドを呼び出す必要があります。これらのコールバックでは、ナビゲーション情報を抽出し、必要に応じてリダイレクトを処理するコードを記述する必要があります。コールバックのドキュメントはこちら にあります。
アプリ内メッセージ/ナッジのコールバックのサンプルコード - GitHub
Android - アプリ内メッセージ/ナッジのコールバックが動作しないのはなぜですか?
アプリ内メッセージのコールバックを設定するには、こちらのドキュメント を参照してください。また、コールバックはアプリケーションの app.js または app.ts に登録する必要があり、設定後に MoEngage プラグインの initialize () メソッドを呼び出す必要があります。
アプリ内メッセージ/ナッジのコールバックのサンプルコード - GitHub
Android - MoEDebuggerActivity とは何ですか?
MoEngage SDK にはネイティブの MoEngage Android SDK がバンドルされているため、Android ビルドにはデバイス上での SDK デバッグをサポートするコンポーネントである MoEDebuggerActivity が含まれます。その機能については、What is MoEDebuggerActivity? を参照してください。
アプリからこれを削除するには、Android プロジェクトの AndroidManifest.xml に次の内容を追加します。
iOS - 「Unsupported Swift Architecture」または「framework not found」でビルドが失敗するのはなぜですか?
Unsupported Swift Architecture、framework 'MoEngageKMMConditionEvaluator' not found、framework 'MoEngageRichNotification' not found などのエラーは、通常、Xcode プロジェクトが arm64 アーキテクチャを除外しているか、MoEngage iOS SDK が提供していないアーキテクチャ向けにビルドしていることを意味します。
まず、Podfile の post_install フックに、EXCLUDED_ARCHS または ONLY_ACTIVE_ARCH を設定する行がないか確認します。このフックは pod install のたびに実行され、Xcode で設定した値を上書きします。すべての Pods ターゲットに正しい設定を適用するには、次のフックを使用します。
次に、.xcodeproj ではなく ios/YourApp.xcworkspace を Xcode で開きます。Project Navigator でアプリのプロジェクトを選択し、アプリのターゲット、Notification Service Extension、Content Extension を含むすべてのターゲットに次の設定を適用します。その後、Pods プロジェクトを選択し、そのターゲットにも同じ設定を繰り返します。
Excluded Architectures(EXCLUDED_ARCHS) : このリストから arm64 を削除します。iPhone および iPad デバイスと Apple シリコンのシミュレーターには arm64 が必要であり、MoEngage iOS SDK v10.x.x 以降は arm64 スライスのみを提供しています。
Build Active Architecture Only(ONLY_ACTIVE_ARCH) : Yes に設定して、Xcode が選択したデバイスまたはシミュレーターのアーキテクチャ向けにのみビルドするようにします。
Architectures(ARCHS) : ARCHS_STANDARD に設定するか、リストに arm64 を追加します。
これらの設定を変更したら、Xcode で Product > Clean Build Folder を選択し、ios ディレクトリから pod install を実行して、再度ビルドします。
MoEngageKMMConditionEvaluator を Do Not Embed に設定しないでください。これにより framework-not-found エラーは解消されますが、このフレームワークはトリガーベースのアプリ内メッセージとプッシュキャンペーンのトリガー条件を評価します。このフレームワークがないと、それらのキャンペーンは表示されません。
CI パイプラインでは arm64 でビルドが失敗するものの、ローカルマシンの Xcode では成功する場合は、ビルドエージェントの Xcode バージョンを確認してください。ビルドエージェントでは古いバージョンが実行されていることがよくあります。エージェントを現在の安定版の Xcode に、少なくともローカルでビルドに使用しているバージョンに更新してください。
Intel ベースの Mac の制限事項を含む、アーキテクチャ設定の完全な手順については、アーキテクチャ互換性のためのプロジェクト設定 を参照してください。
iOS - 「Use of undeclared identifier ‘MoEngageInitializer’」でビルドが失敗するのはなぜですか?
このエラーは、ios/YourApp/AppDelegate.m または AppDelegate.mm 内の MoEngage のインポートが、#if RCT_NEW_ARCH_ENABLED ブロックの内側または後ろにある場合に発生します。アプリで React Native の新しいアーキテクチャを使用していない場合、この条件は false となり、コンパイラーはインポートをスキップするため、MoEngageInitializer が宣言されません。
インポートを #if RCT_NEW_ARCH_ENABLED ブロックの上に移動します。
iOS - プラグインのアップグレード後に ReactNativeMoEngage ヘッダーが見つからないのはなぜですか?
プラグインのアップグレード後に 'ReactNativeMoEngage/MoEngageInitializer.h' file not found などのエラーが発生する一般的な原因は 2 つあります。
プラグインのバージョン間でヘッダー名が変更された。 古いプラグインバージョンでは MOReactInitializer.h を使用し、現在のバージョンでは MoEngageInitializer.h を使用します。ios/YourApp/AppDelegate.m または AppDelegate.mm のインポートを、インストールしたバージョンに合わせて更新してください。現在のインポートと初期化のコードについては、iOS の初期化 を参照してください。
ターゲットがヘッダーパスを解決できない。 ReactNativeMoEngage ターゲットの Build Settings で、Header Search Paths と Library Search Paths の両方に $(inherited) が含まれていることを確認し、ターゲットが CocoaPods によって生成されたパスを取得できるようにします。また、pod install を実行した後に、ReactNativeMoEngage Pod が Pods プロジェクトに表示されていることを確認してください。Pod が見つからない場合、インストール時にプラグインがリンクされていません。
アップグレード後にプラグインを再リンクするには、プロジェクトのルートから次のコマンドを実行します。
その後、Xcode でビルドフォルダをクリーンアップして、再度ビルドします。
iOS (SPM) - 依存関係を追加または更新した後に、パッケージが見つからないというエラーでビルドが失敗するのはなぜですか?
React Native の SPM 自動リンクは自動的には実行されません。ios ディレクトリに移動し、npx react-native spm を再度実行して自動リンクのグラフを再生成してください。
このコマンドは、新規クローン後、node_modules のリセット後、および依存関係の変更後に実行してください。CocoaPods とは異なり、npx react-native run-ios はこのコマンドを自動的には実行しません。
iOS (SPM) - アプリが古いバージョンの SDK でビルドされ続けるのはなぜですか?
Xcode で Product > Clean Build Folder を選択し、次に File > Packages > Reset Package Caches を選択します。それでも古いバージョンが使用される場合は、Xcode を終了して ~/Library/Developer/Xcode/DerivedData を削除し、ios ディレクトリから npx react-native spm を再度実行してください。
iOS (SPM) - 最小デプロイメントターゲットのエラーでビルドが失敗するのはなぜですか?
React Native が生成する SPM パッケージには iOS 15 が必要なため、SPM では最小デプロイメントターゲットとして iOS 15.0 が必要です。Xcode で ios/<YourApp>.xcodeproj を開いてアプリのターゲットを選択し、General > Minimum Deployments を 15.0 に設定します。通知拡張機能のターゲットについても同じ操作を繰り返します。SPM では、Podfile の platform :ios の行は適用されなくなります。アプリで iOS 13 または 14 をサポートする必要がある場合は、代わりに CocoaPods を使用してください。
iOS (SPM) - apple-sdk のバージョン競合により Xcode でパッケージの解決に失敗するのはなぜですか?
MoEngage React Native プラグインは、MoEngageRichNotification を含む MoEngage iOS SDK(apple-sdk)を特定のバージョンですでに取り込んでいます。このエラーは、apple-sdk が別のバージョンで Xcode プロジェクトにも追加されていることを意味します。
拡張機能インテグレーターツールを使用している場合は、Xcode の Package Dependencies で、別途追加した apple-sdk パッケージを削除してください。このパッケージは不要です。
独自の拡張機能のコードで MoEngageRichNotification をインポートしている場合は、別途追加した apple-sdk パッケージの Dependency Rule を Exact Version に設定し、プラグインが使用するバージョンを指定してください。MoEngage React Native パッケージをアップグレードするたびに更新してください。