지나주 MYPI

지나주
접속 : 3400   Lv. 40

Category

Profile

Counter

  • 오늘 : 7 명
  • 전체 : 127278 명
  • Mypi Ver. 0.3.1 β
[게임 개발] 유니티 - ATT, SKAdNetwork Ids for UnityAds (0) 2021/08/20 PM 03:50

신규 주산 앱은 IAB(In-App Billing), 즉 게임내 유료 구매 아이템 없이 서비스하기로 기획했습니다.

나중에 컨텐츠가 어느정도 추가되면 유료 앱을 별도로 내려고요.

 

유료 구매 아이템 대신 광고를 붙이기로 해서, 열심히 UnityAds를 구현하고 있었습니다.

Interstitial Ad, Rewarded Ad 두 개를 상황에 맞게 띄워주도록 작업했는데요.

유니티 Dashboard 에 가서 Ads setting 설정 작업중에 [ Missing SKAdNetwork Ids from Info.plist ] 라는 내용이 보이네요.

 

검색해보니 iOS에서 광고를 위한 식별자를 막으면서 대신으로 제공하는 기능이라고 합니다.

요새 아이폰에서 앱을 설치하고 실행하면 뜨는, 사용자 활동 추적과 관계된 내용인가봅니다.

img/21/08/20/17b622a0b452fa5b9.png

 

iOS 빌드하기 전에 XCode 에서 Info.plist 파일을 편집해야 한다고 하는데요.

유니티 빌드 -> XCode 실행 -> (XCode 작업) -> XCode 최종 빌드

과정에서 중간의 (XCode 작업)이 들어가면 추후 패치 빌드시 자꾸 귀찮아질 것 같습니다.

 

예전에 얼핏 봐 두었던 유니티 에디터 빌드 PostProcessBild 가 기억나서 관련 코드를 찾아봤습니다.

ATT 관련된 일본 개발자의 포스트가 있었는데요. 아주 잘 정리되었고 코드를 복사해다가 붙여넣으면 되겠구나 싶었는데...

작업하기 전에 유니티 Dashboard를 꼼꼼하게 살펴보니 개발자를 위한 포스트 링크가 있네요.

결과적으로 유니티 Dashboard에 올라온 페이지를 보고 따라 구현하면 되는거였습니다. (빙고!)

(일본 개발자의 포스트 : https://qiita.com/tetr4lab/items/0b27fb4d2bcaa19ead79)

 

유니티 제공 포스트를 보며, 아래와 같이 따라 작업하면 됩니다.

 

https://unityads.unity3d.com/help/monetization/ios14#ad-network-ids

 

1. Upgrading your Unity Ads SDK

Installing iOS 14 support package - 유니티 PackageManager에서 iOS 14 Advertising Support 패키지를 설치

 

2. Ad network IDs

Including ad network IDs in Unity - 빌드해서 XCode에 가보면 Info.plist 파일에 SKAdNetworkItems 가 등록되어 있음

 

3. App Tracking Transparency

3-1. Displaying an ATT context screen - iOS ATT 확인 화면을 띄우기 전에 보여줄 화면 + ATT 확인 화면 실행 코드

: 유니티에서는 iOS ATT 확인 화면을 띄우기 전에 사용자들에게 설명문을 보여주도록 권장하고 있습니다. 하지만 언어별로 구현해야해서 저는 그냥 스킵...

 

3-2. Displaying an ATT permission request - 애플의 ATT 가이드라인을 통과하기 위해서, Info.plist에 NSUserTrackingUsageDe scrip tion을 추가

(사용자에게 앱 사용/실행시 권한을 요청하는 기능이 왜 들어가는지에 대한 간단한 설명)

3-3. Implementing an ATT permission request in Unity - iOS 앱 실행시 ATT 확인 화면을 띄우는 코드 구현 (3-1의 샘플 코드 안에는 미리 구현되어 있음)

 

 

어려움 없이 구현이 끝나고 작업 컴퓨터에서 잘 실행되는 것을 확인했습니다.

주로 테스트하는 안드로이드 디바이스에도 apk 빌드해서 실행하고 잘 되는 상황이었는데요.

빌드창에서 환경을 iOS 로 바꾸고 빌드하니 빌드 에러가 발생합니다.

 

 

Assets/Editor/PostBuildStep.cs(2,19): error CS0234: The type or namespace name 'Callbacks' does not exist in the namespace 'UnityEditor' (are you missing an assembly reference?)

   using UnityEditor;
using UnityEditor.Callbacks;
#if UNITY_IOS
using UnityEditor.iOS.Xcode;
#endif
using System.IO;

 

 

[현상]

- iOS 빌드 환경에서 UnityEdiitor 에러 발생

 

[문제 해결 과정]

- 해당 파일을 Assets > Editor 폴더에 저장 - 에러 발생

- using UnityEditor; using UnityEditor.Callbacks; 를 #if UNITY_EDITOR #endif 로 둘러줌 - 에러 발생

- Assets > Editor 폴더의 Editor.asmdef 파일에 Unity.Advertisement, Unity.Advertisement.IosSupport 등을 등록하고 apply 적용 - 에러 발생

- Assets > Editor 폴더의 Editor.asmdef 파일에 UnityEngine.Advertisements 들을 등록하고 apply 적용 - 에러 발생

- Assets > Script 폴더의 Script.asmdef 파일에 위 두 작업을 동일하게 적용 - 에러 발생

 

아이구 답답하고 속터져라 노래를 부르며 잠시 쉴 겸 구글링하는데, 아래 포스트를 발견했습니다.

https://sanctacrux.tistory.com/670

본문을 내리다보니 아래 내용이 보이네요.

--------------------

UnityEditor iOS 플러그인

import

Project - Edit Reference - .NET Assembly 탭 - Browse - UnityEditor.iOS.Extensions.Xcode.dll 추가


Xcode 자동 설정 (Plugin/iOS/Editor/XcodeSettingsPostProcesser.cs)

--------------------

어? XcodeSettingsPostProcesser.cs 파일을 Assets > Editor 가 아니라 Assets > Plugins > iOS > Editor 폴더에 넣으라고 나와있네요.

 

- Assets > Plugins > iOS > Editor 폴더를 만들고 해당 파일을 넣어서 빌드 - 빌드 성공


[추가 정보]

Dashboard 내용에는 설정할 내용들이 좀 더 있는데요.

app-ads.txt 파일 서버 업로드도 필요합니다. (애플용 ATT나 광고 매출에 영향을 줄 수 있는 app-ads.txt 파일 모두 선택사항입니다. 필수 구현은 아님)

저는 개인 홈페이지 호스팅 서버가 있어서, 여기에 파일을 올려서 쉽게 처리했습니다.

개인사업자이고 홈페이지 서버가 따로 없으면 구글 Blogger 에서 무료로 해결하시더군요.

 

 

[알게 된 내용]

XCode의 Info.plist 수정 작업이 필요할 경우, 유니티에서 PostProcess 코드를 작성해서 자동화(?)할 수 있습니다.

유니티에서 제공하는 포스트를 보며 작업하다, 3-2. Displaying an ATT permission request 부분에서 소스 코드를 추가하게 되는데요.

Editor와 관련된 이 소스 코드 파일을 Assets > Plugins > iOS > Editor 폴더에 넣으면 됩니다.

(더 구글링하다보니 Assets > Editor > iOS 폴더에 넣는다는 사람도 있네요. 이 내용은 테스트해보진 않았습니다. 전 지금 녹초가 되었거든요. 헥헥)

 

SkAdNetworkList 나 app-ads.txt 의 내용은 추후 추가될 수 있다고 하네요.

가끔 업데이트되는 내용이 있는지 확인하고, 추가된 내용이 있으면 반영해야 하겠습니다.

 

 

 

이제 개발은 끝났습니다.

다음 주에는 앱 마켓 등록 페이지에 올릴 홍보용 이미지, 문구들을 준비해야겠네요.

동시에 한 주 동안 안드로이드 아이폰 실기 플레이 테스트를 진행할 예정인데요.

부족하다 싶으면 컨텐츠를 조금 더 넣어야 할 지도 모르겠습니다.

 

8월 말까지는 오픈하고 좀 쉬고 싶은데 어떨지... 두근두근하네요.

신고

 
X