Unity SDK
Attriax вже пропонує трек середовища виконання Unity для атрибуції з урахуванням сцен та обробки глибоких посилань, але ми все ще розглядаємо його як публічну поверхню інтеграції, що перебуває в розробці.
Поверхня пакету
Загальний посібник для Attriax Unity package. Використовуйте робочий простір проєкту, коли вам потрібні детальні кроки налаштування, контекст релізу та значення, специфічні для проєкту.
Для чого команди це використовують
Це завдання середовища виконання, які продукт вже надає через SDK та відповідні інструменти робочого простору.
Середовище виконання з урахуванням сцен
Тримайте атрибуцію, відстеження відкриття застосунку та контекст сцени разом у lifecycle рушія.
Налаштування з підтримкою валідатора
Використовуйте валідатор редактора та діагностику налаштування після імпорту пакета до реального проєкту.
Трек випусків, що розвивається
Задокументовано сьогодні, вдосконалюється з часом, найкраще поєднувати з робочим простором проєкту для поточних деталей випуску.
Примітки щодо інтеграції
Тримайте публічну документацію легкою, а потім відкривайте робочий простір проєкту, коли вам потрібні точні кроки налаштування для вашого власного потоку релізів.
Можливості
- Ініціалізуйте з налаштованих параметрів або динамічно ініціалізуйте хост, коли вам потрібен шлях налаштування, що починається з коду.
- Підписуйтесь на події глибоких посилань та вирішуйте місця призначення після завершення обробки відкриття застосунку середовищем виконання.
- Вмикайте доставку з урахуванням GDPR за допомогою GdprEnabled та використовуйте Attriax.Consent.Gdpr з потоків конфіденційності або налаштувань.
- Відстежуйте контекст сцени або ігрового процесу як події середовища виконання, щоб атрибуція залишалась пов'язаною з поведінкою в грі.
- Запускайте перевірку на стороні редактора після імпорту для підтвердження вирішення токена та хоста під час налаштування.
Примітки
- Unity публічно задокументовано тут, але трек випусків ще розвивається порівняно з Flutter та вебом.
- Unity Editor та десктопні програвачі не реєструють токени деінсталяцій безпосередньо, тому мости токенів повинні залишатися за перевірками мобільного середовища виконання.
- Створіть проєкт, щоб отримати доступ до поточних деталей випуску пакета, приміток та робочого процесу валідатора з поверхні налаштування після входу.
Дистрибуція
Приклад
Фрагмент нижче відображає початкову точку робочого простору проєкту, зберігаючи посібник загальним замість проєктно-специфічного.
Assets/Scripts/AttriaxBootstrap.cs
Ініціалізуйте середовище виконання, підписуйтесь на глибокі посилання, відстежуйте контекст сцени та повертайте вирішені місця призначення до потоку вашої гри.
1#nullable enable
2using System;
3using System.Collections.Generic;
4using System.Threading.Tasks;
5using Attriax.Unity;
6using UnityEngine;
7using UnityEngine.SceneManagement;
8
9public sealed class AttriaxBootstrap : MonoBehaviour
10{
11 private Attriax? _attriax;
12 private IDisposable? _deepLinkSubscription;
13
14 private async void Start()
15 {
16 if (Attriax.HasConfiguredSettings)
17 {
18 _attriax = await Attriax.InitializeConfiguredAsync();
19 }
20 else
21 {
22 var host = await AttriaxBehaviour.CreateAndInitializeHostAsync(
23 new AttriaxConfig
24 {
25 ProjectToken = "ax_your_project_token",
26 GdprEnabled = true,
27 EnableDebugLogs = Debug.isDebugBuild,
28 AutomaticSceneTracking = true,
29 SdkMetadata = new Dictionary<string, object>
30 {
31 ["environment"] = Application.platform.ToString(),
32 },
33 },
34 new AttriaxInitOptions
35 {
36 CaptureInitialUrl = true,
37 },
38 persistAcrossScenes: true);
39
40 _attriax = host.Instance ?? throw new InvalidOperationException(
41 "Attriax host did not create an SDK instance.");
42 }
43
44 if (_attriax == null)
45 {
46 return;
47 }
48
49 _deepLinkSubscription = _attriax.DeepLinks.Stream.Subscribe(HandleDeepLinkEvent);
50
51 var initialDeepLink = await _attriax.DeepLinks.WaitForInitialDeepLink;
52 var originalInstallReferrer = await _attriax.Referrer.GetOriginalInstallReferrerAsync();
53 var reinstallReferrer = await _attriax.Referrer.GetReinstallReferrerAsync();
54 var appOpen = await _attriax.WaitForAppOpenTrackingAsync();
55 if (appOpen != null)
56 {
57 Debug.Log(quot;[Attriax] Install state: {appOpen.InstallState}");
58 }
59
60 if (originalInstallReferrer != null)
61 {
62 Debug.Log(quot;[Attriax] Original install campaign: {originalInstallReferrer.Campaign}");
63 }
64
65 if (reinstallReferrer != null)
66 {
67 Debug.Log(quot;[Attriax] Reinstall campaign: {reinstallReferrer.Campaign}");
68 }
69
70 if (initialDeepLink?.Found == true)
71 {
72 OpenDeepLink(initialDeepLink.Uri.AbsolutePath);
73 }
74
75 await _attriax.TrackEventAsync("session_started", new AttriaxTrackEventOptions
76 {
77 EventData = new Dictionary<string, object>
78 {
79 ["scene"] = SceneManager.GetActiveScene().name,
80 },
81 });
82
83 // Forward mobile uninstall tokens from your native bridge after the SDK is ready.
84 // Example hooks:
85 // NativePushBridge.FirebaseTokenReceived += token => _ = RegisterFirebaseTokenAsync(token);
86 // NativePushBridge.ApplePushTokenReceived += token => _ = RegisterApplePushTokenAsync(token);
87 }
88
89 private void OnDestroy()
90 {
91 _deepLinkSubscription?.Dispose();
92 }
93
94 private void HandleDeepLinkEvent(AttriaxDeepLinkEvent deepLinkEvent)
95 {
96 if (!deepLinkEvent.Found)
97 {
98 return;
99 }
100
101 OpenDeepLink(deepLinkEvent.Uri.AbsolutePath);
102 }
103
104 public async Task RegisterFirebaseTokenAsync(string? token)
105 {
106 if (_attriax == null)
107 {
108 return;
109 }
110
111 await _attriax.RegisterFirebaseMessagingTokenAsync(
112 token,
113 new Dictionary<string, object>
114 {
115 ["provider"] = "fcm",
116 ["platform"] = Application.platform.ToString(),
117 });
118 }
119
120 public async Task RegisterApplePushTokenAsync(string? token)
121 {
122 if (_attriax == null)
123 {
124 return;
125 }
126
127 await _attriax.RegisterApplePushTokenAsync(
128 token,
129 new Dictionary<string, object>
130 {
131 ["provider"] = "apns",
132 ["platform"] = Application.platform.ToString(),
133 });
134 }
135
136 private void OpenDeepLink(string path)
137 {
138 Debug.Log(quot;[Attriax] Navigate to: {path}");
139 // Map the Attriax path to your scene, router, or gameplay flow.
140 }
141}