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.

Das Unity-Paket ist noch nicht in einem oeffentlichen Paketregistrierung veroefffentlicht. Verwenden Sie diese oeffentlichen Dokumente, um die API-Form zu bewerten, und erstellen Sie dann ein Projekt, um den aktuellen Paket-Release, Hinweise und den Download-Flow zu sehen.

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

Das Unity-Paket ist noch nicht in einem oeffentlichen Paketregistrierung veroefffentlicht. Verwenden Sie diese oeffentlichen Dokumente, um die API-Form zu bewerten, und erstellen Sie dann ein Projekt, um den aktuellen Paket-Release, Hinweise und den Download-Flow zu sehen.

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}