トラブルシューティング
iOS Swizzling
- AppsFlyerのUnityプラグインは、SDKが機能するために iOSライフサイクル イベントを使用します。
- プラグインは、呼び出されるライフサイクルイベントに UnityAppController を使用します。
- 他のプラグイン(Firebase、Facebookなど)が同じUnityAppControllerを使用することがあり、ライフサイクルイベントで競合が発生します。
- これらのイベントには、didBecomeActive, didEnterBackground, didReceiveRemoteNotification, continueUserActivity, openURL が含まれます。
- 競合が発生すると、これらのメソッドが呼び出されない場合があります。
- AppsFlyer Unity Pluginによって提供されるソリューションは Swizzling です。
- 開始日
v6.0.7
スウィズリングを自動的に有効にするオプションがあります。
スウィズリングを有効にするには、次の3つのオプションがあります:
- For versions up to
6.5.3
- バージョン
6.5.3
info.plist の使用
- To enable swizzling, in the info.plist file, a boolean K/V called
AppsFlyerShouldSwizzle
should be set to 1 (true). - これにより、自動的にスウィズリングが有効になり、他のプラグインとの競合が解決されます。
- AppsFlyer+AppController のコードがネイティブ側で呼び出されていることを確認します。
- Comment out
IMPL_APP_CONTROLLER_SUBCLASS(AppsFlyerAppController)
in AppsFlyerAppController.mm.
C# Scriptの使用
- 新しい C# スクリプトを作成します。(AppsFlyerを AFUpdatePlist.cs と呼びます)
- スクリプトをエディターフォルダーに配置します。(Assets > Editor > AFUpdatePlist.cs)
- スクリプトのコードは次のようになります:
using System.IO;
using UnityEngine;
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEditor.iOS.Xcode;
public class MyBuildPostprocessor {
[PostProcessBuildAttribute]
public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject) {
if (target == BuildTarget.iOS)
{
string plistPath = pathToBuiltProject + "/Info.plist";
PlistDocument plist = new PlistDocument();
plist.ReadFromString(File.ReadAllText(plistPath));
PlistElementDict rootDict = plist.root;
rootDict.SetBoolean("AppsFlyerShouldSwizzle", true);
File.WriteAllText(plistPath, plist.WriteToString());
Debug.Log("Info.plist updated with AppsFlyerShouldSwizzle");
}
}
}
- AppsFlyer+AppController のコードがネイティブ側で呼び出されていることを確認します。
- Comment out
IMPL_APP_CONTROLLER_SUBCLASS(AppsFlyerAppController)
in AppsFlyerAppController.mm.
マクロプロセッサの使用
- Preprocessor macroフラグを追加する
AFSDK_SHOULD_SWIZZLE=1
をプロジェクトのビルド設定に追加します。
- AppsFlyer+AppController のコードがネイティブ側で呼び出されていることを確認します。
info.plistの更新
この例では、SKANポストバックを AppsFlyer に送信するように info.plist を更新しますが、スクリプトを調整して info.plist 内の任意のキーを更新できます。
- 新しい C# スクリプトを作成します。(AppsFlyerを AFUpdatePlist.cs と呼びます)
- スクリプトをエディターフォルダーに配置します。(Assets > Editor > AFUpdatePlist.cs)
- スクリプトのコードは次のようになります:
using System.IO;
using UnityEngine;
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEditor.iOS.Xcode;
public class MyBuildPostprocessor
{
[PostProcessBuildAttribute]
public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject)
{
if (target == BuildTarget.iOS)
{
string plistPath = pathToBuiltProject + "/Info.plist";
PlistDocument plist = new PlistDocument();
plist.ReadFromString(File.ReadAllText(plistPath));
PlistElementDict rootDict = plist.root;
rootDict.SetString("NSAdvertisingAttributionReportEndpoint", "https://appsflyer-skadnetwork.com/");
/*** To add more keys :
** rootDict.SetString("<your key>", "<your value>");
***/
File.WriteAllText(plistPath, plist.WriteToString());
Debug.Log("Info.plist updated with NSAdvertisingAttributionReportEndpoint");
}
}
}
更新済 約1年前