Unity SDK

Attriax stel reeds 'n Unity-looptydspoor beskikbaar vir tooneel-bewuste attribusie en diep-skakel-hantering, maar ons behandel dit steeds as 'n openbare integrasie-oppervlak wat in ontwikkeling is.

Pakketoppervlak

Algemene gids vir Attriax Unity package. Gebruik die projekwerkspasie wanneer u gedetailleerde opstelstappe, vrystelling-konteks en projekspesifieke waardes benodig.

Die Unity-pakket is nog nie na 'n openbare pakketregisters gepubliseer nie. Gebruik hierdie openbare dokumentasie om die API-vorm te evalueer en skep dan 'n projek om die huidige pakketvrystellling, notas en aflaai-vloei te sien.

Waarvoor spanne dit gebruik

Dit is die looptyd-take wat die produk reeds deur die SDK en die ooreenstemmende werkspasie-gereedskap beskikbaar stel.

Tooneel-bewuste looptyd

Hou attribusie, app-oop-opsporing en toneelkonteks saam in die enjin-lewensiklus.

Validator-ondersteunde opstelling

Gebruik die redigeerder-validator en opstel-diagnostiek sodra die pakket in 'n regte projek ingevoer is.

Ryp wordende vrystellingspoor

Vandag gedokumenteer, verbeter met verloop van tyd en die beste gepaar met die projekwerkruimte vir huidige vrystellingsbesonderhede.

Integrasienotas

Hou die openbare dokumentasie liggies, en open dan die projekwerkspasie wanneer u die presiese opstelstappe vir u eie vrystellingsvloei benodig.

Vermoens

  • Initialiseer vanaf gekonfigureerde instellings of bootstrap 'n gasheer dinamies wanneer u 'n kode-eerste opstelpad benodig.
  • Teken in op diep-skakel-gebeurtenisse en los bestemmings op nadat die looptyd app-oop-verwerking voltooi het.
  • Aktiveer GDPR-bewuste aflewering met GdprEnabled en gebruik Attriax.Consent.Gdpr van privaatheid- of instellings-vloei.
  • Spoor tooneel- of speletjie-konteks as looptyd-gebeurtenisse sodat attribusie verbind bly met binne-spel-gedrag.
  • Voer redigeerder-kant validasie na invoer uit om token- en gasheer-resolusie tydens opstelling te bevestig.

Notas

  • Unity is hier openbaar gedokumenteer, maar die vrystellingspoor is nog steeds aan die ryp word vergeleke met Flutter en web.
  • Unity Editor en werkskerm-spelers registreer nie deïnstallasie-tokens direk nie, so tokenbrue moet agter mobiele looptyd-kontroles bly.
  • Skep 'n projek om toegang te kry tot die huidige pakket-vrystellingsbesonderhede, notas en validator-werkvloei van die aangetekende opstel-oppervlak.

Verspreiding

Die Unity-pakket is nog nie na 'n openbare pakketregisters gepubliseer nie. Gebruik hierdie openbare dokumentasie om die API-vorm te evalueer en skep dan 'n projek om die huidige pakketvrystellling, notas en aflaai-vloei te sien.

Voorbeeld

Die onderstaande kode-uittreksel weerspieel die beginpunt van die projekwerkspasie terwyl die gids algemeen bly in plaas van projekspesifiek.

Assets/Scripts/AttriaxBootstrap.cs

Initialiseer die looptyd, teken in op diep skakels, spoor toneelkonteks en gee opgeboste bestemmings terug na u spel-vloei.

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          AppToken = "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}