Unity SDK
Unity SDK постачається як версіонований Git UPM-пакет (0.6.0) для атрибуції з урахуванням сцен та обробки глибоких посилань і обгортає те саме спільне ядро Attriax, що й кожен інший SDK.
Поверхня пакету
Загальний посібник для Attriax Unity package. Використовуйте робочий простір проєкту, коли вам потрібні детальні кроки налаштування, контекст релізу та значення, специфічні для проєкту.
Для чого команди це використовують
Це завдання середовища виконання, які продукт вже надає через SDK та відповідні інструменти робочого простору.
Середовище виконання з урахуванням сцен
Тримайте атрибуцію, відстеження відкриття застосунку та контекст сцени разом у lifecycle рушія.
Налаштування з підтримкою валідатора
Використовуйте валідатор редактора та діагностику налаштування після імпорту пакета до реального проєкту.
Версіонований реліз Git UPM
Встановлюється із закріпленого Git-тега, наприклад #v0.6.0; поєднуйте з робочим простором проєкту для поточних деталей випуску.
Примітки щодо інтеграції
Тримайте публічну документацію легкою, а потім відкривайте робочий простір проєкту, коли вам потрібні точні кроки налаштування для вашого власного потоку релізів.
Можливості
- Ініціалізуйте з налаштованих параметрів або динамічно ініціалізуйте хост, коли вам потрібен шлях налаштування, що починається з коду.
- Підписуйтесь на події глибоких посилань та вирішуйте місця призначення після завершення обробки відкриття застосунку середовищем виконання.
- Вмикайте доставку з урахуванням GDPR за допомогою GdprEnabled та використовуйте Attriax.Consent.Gdpr з потоків конфіденційності або налаштувань.
- Відстежуйте контекст сцени або ігрового процесу як події середовища виконання, щоб атрибуція залишалась пов'язаною з поведінкою в грі.
- Запускайте перевірку на стороні редактора після імпорту для підтвердження вирішення токена та хоста під час налаштування.
Примітки
- Unity постачається з версіонованого Git UPM-пакета і залишається узгодженим за поведінкою зі спільним ядром Attriax, яке використовують Flutter, веб та нативні SDK.
- Unity Editor та десктопні програвачі не реєструють токени деінсталяцій безпосередньо, тому мости токенів повинні залишатися за перевірками мобільного середовища виконання.
- Створіть проєкт, щоб отримати доступ до поточних деталей випуску пакета, приміток та робочого процесу валідатора з поверхні налаштування після входу.
Встановлення
У Unity Package Manager оберіть "Add package from git URL" та вставте URL нижче. Суфікс ?path= вказує на вбудований UPM-пакет у Packages/com.attriax.unity.
Команда встановлення
https://github.com/attriax/sdk-unity.git?path=Packages/com.attriax.unityПриклад
Фрагмент нижче відображає початкову точку робочого простору проєкту, зберігаючи посібник загальним замість проєктно-специфічного.
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}