iOS 스위즐링

  • 앱스플라이어 Unity 플러그인은 SDK가 작동하도록 iOS 수명 주기 이벤트를 사용합니다.
  • 플러그인은 호출할 lifecycle 이벤트에 UnityAppController를 사용합니다.
  • 때때로 다른 플러그인 (Firebase, 페이스북 등)이 동일한 UnityAppController를 사용하는 데 이것은 lifecycle 이벤트에서 충돌을 일으킵니다.
  • 이러한 이벤트에는 didBecomeActive, didEnterBackground, didReceiveRemoteNotification, continueUserActivity 및 openURL이 포함됩니다.
  • 충돌이 발생하면 해당 메서드를 호출할 수 없습니다.
  • 앱스플라이어 Unity 플러그인이 제공하는 솔루션은 스위즐링입니다.
  • 시작: v6.0.7 스위즐링을 자동으로 활성화하는 옵션이 있습니다.

스위즐링을 활성화하는 데는 다음의 3가지 옵션이 있습니다.

info .plist 사용

  • 스위즐링을 사용하려면 info.plist 파일에서 호출된 부울 K/V를 AppsFlyerShouldSwizzle 1(true)로 설정해야 합니다.
  • 이렇게 되면 스위즐링이 자동으로 활성화되고 다른 플러그인과의 충돌이 해결됩니다.
  • 앱스플라이어+AppController의 코드가 네이티브 사이드에서 호출되는지 검증합니다.
  • AppsFlyerAppController.mm에서 IMPL_APP_CONTROLLER_SUBCLASS(AppsFlyerAppController) 주석을 제거합니다.

c# 스크립트 사용

  1. 새 C# 스크립트를 만듭니다. (이것을 AFUpdatePlist.cs라고 부릅니다)
  2. 스크립트를 편집기 폴더에 배치합니다(에셋 > 편집기 > AFUpdatePlist.cs).
  3. 스크립트의 코드는 다음과 같아야 합니다.
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");
        }
        
    }
}
  1. 앱스플라이어+AppController의 코드가 네이티브 사이드에서 호출되는지 검증합니다.
  2. AppsFlyerAppController.mm에서 IMPL_APP_CONTROLLER_SUBCLASS(AppsFlyerAppController) 주석을 제거합니다.

매크로 프로세서 사용

alt text


info.plist 업데이트

이 예시에서는 SKAN 포스트백을 앱스플라이어로 전송하도록 info.plist를 업데이트하지만 스크립트는 info.plist의 모든 키를 업데이트하도록 조정할 수 있습니다.

  1. 새 C# 스크립트를 만듭니다. (이것을 AFUpdatePlist.cs라고 부릅니다)
  2. 스크립트를 편집기 폴더에 배치합니다(에셋 > 편집기 > AFUpdatePlist.cs).
  3. 스크립트의 코드는 다음과 같아야 합니다.
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");
        }

    }
}