Unity SDK
Attriax bietet bereits eine Unity-Laufzeitstrecke fuer szenebewusste Attribution und Deep-Link-Verarbeitung, behandelt sie jedoch noch als eine sich in der Entwicklung befindende oeffentliche Integrationsflaeche.
Paket-Oberflaeche
Allgemeiner Leitfaden fuer Attriax Unity package. Verwenden Sie den Projektarbeitsbereich, wenn Sie detaillierte Setup-Schritte, Release-Kontext und projektspezifische Werte benoetigen.
Wofuer Teams es verwenden
Dies sind die Laufzeit-Jobs, die das Produkt bereits ueber das SDK und die passenden Arbeitsbereich-Tools bereitstellt.
Szenebewusste Laufzeit
Halten Sie Attribution, App-Open-Tracking und Szenenkontext im Engine-Lebenszyklus zusammen.
Validator-gestuetztes Setup
Verwenden Sie den Editor-Validator und Setup-Diagnosen, sobald das Paket in ein echtes Projekt importiert wurde.
Reifende Release-Strecke
Heute dokumentiert, mit der Zeit verbessert und am besten mit dem Projektarbeitsbereich fuer aktuelle Release-Details kombiniert.
Integrationshinweise
Halten Sie die oeffentlichen Dokumente schlank, und oeffnen Sie dann den Projektarbeitsbereich, wenn Sie die genauen Setup-Schritte fuer Ihren eigenen Release-Flow benoetigen.
Faehigkeiten
- Initialisieren Sie aus konfigurierten Einstellungen oder starten Sie einen Host dynamisch, wenn Sie einen Code-First-Setup-Pfad benoetigen.
- Abonnieren Sie Deep-Link-Ereignisse und loesen Sie Ziele auf, nachdem die Laufzeit die App-Open-Verarbeitung abgeschlossen hat.
- Aktivieren Sie DSGVO-bewusste Auslieferung mit GdprEnabled und verwenden Sie Attriax.Consent.Gdpr aus Datenschutz- oder Einstellungs-Flows.
- Verfolgen Sie Szenen- oder Gameplay-Kontext als Laufzeitereignisse, damit die Attribution mit dem In-Game-Verhalten verbunden bleibt.
- Fuehren Sie nach dem Import eine editorseitige Validierung durch, um die Token- und Host-Aufloesung waehrend der Einrichtung zu bestaetigen.
Hinweise
- Unity ist hier oeffentlich dokumentiert, aber die Release-Strecke reift im Vergleich zu Flutter und Web noch.
- Unity Editor und Desktop-Player registrieren keine Deinstallations-Token direkt, daher sollten Token-Bridges hinter mobilen Laufzeitpruefungen bleiben.
- Erstellen Sie ein Projekt, um auf aktuelle Paket-Release-Details, Hinweise und den Validator-Workflow von der angemeldeten Setup-Flaeche zuzugreifen.
Distribution
Beispiel
Das folgende Snippet spiegelt den Startpunkt des Projektarbeitsbereichs wider und haelt den Leitfaden allgemein statt projektspezifisch.
Assets/Scripts/AttriaxBootstrap.cs
Initialisieren Sie die Laufzeit, abonnieren Sie Deep Links, verfolgen Sie den Szenenkontext und geben Sie aufgeloeste Ziele an Ihren Spielfluss zurueck.
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}