문제 해결
iOS 스위즐링
- 앱스플라이어 Unity 플러그인은 SDK가 작동하도록 iOS 수명 주기 이벤트를 사용합니다.
- 플러그인은 호출할 lifecycle 이벤트에 UnityAppController를 사용합니다.
- 때때로 다른 플러그인 (Firebase, 페이스북 등)이 동일한 UnityAppController를 사용하는 데 이것은 lifecycle 이벤트에서 충돌을 일으킵니다.
- 이러한 이벤트에는 didBecomeActive, didEnterBackground, didReceiveRemoteNotification, continueUserActivity 및 openURL이 포함됩니다.
- 충돌이 발생하면 해당 메서드를 호출할 수 없습니다.
- 앱스플라이어 Unity 플러그인이 제공하는 솔루션은 스위즐링입니다.
- 시작:
v6.0.7
스위즐링을 자동으로 활성화하는 옵션이 있습니다.
스위즐링을 활성화하는 데는 다음의 3가지 옵션이 있습니다.
- 버전업인 경우
6.5.3
- 다음 버전
6.5.3
info .plist 사용
- 스위즐링을 사용하려면 info.plist 파일에서 호출된 부울 K/V를
AppsFlyerShouldSwizzle
1(true)로 설정해야 합니다. - 이렇게 되면 스위즐링이 자동으로 활성화되고 다른 플러그인과의 충돌이 해결됩니다.
- 앱스플라이어+AppController의 코드가 네이티브 사이드에서 호출되는지 검증합니다.
- AppsFlyerAppController.mm에서
IMPL_APP_CONTROLLER_SUBCLASS(AppsFlyerAppController)
주석을 제거합니다.
c# 스크립트 사용
- 새 C# 스크립트를 만듭니다. (이것을 AFUpdatePlist.cs라고 부릅니다)
- 스크립트를 편집기 폴더에 배치합니다(에셋 > 편집기 > 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");
}
}
}
- 앱스플라이어+AppController의 코드가 네이티브 사이드에서 호출되는지 검증합니다.
- AppsFlyerAppController.mm에서
IMPL_APP_CONTROLLER_SUBCLASS(AppsFlyerAppController)
주석을 제거합니다.
매크로 프로세서 사용
- 전처리기 매크로 플래그 추가
AFSDK_SHOULD_SWIZZLE=1
프로젝트의 설정 구성 목적.
- Validate that the code in the AppsFlyer+AppController is called on the native side.
info.plist 업데이트
이 예시에서는 SKAN 포스트백을 앱스플라이어로 전송하도록 info.plist를 업데이트하지만 스크립트는 info.plist의 모든 키를 업데이트하도록 조정할 수 있습니다.
- 새 C# 스크립트를 만듭니다. (이것을 AFUpdatePlist.cs라고 부릅니다)
- 스크립트를 편집기 폴더에 배치합니다(에셋 > 편집기 > 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");
}
}
}
최신 데이터 11개월 전