Migrer le SDK Adapty Unity vers la v3.3
Adapty SDK 3.3.0 est une version majeure qui apporte des améliorations pouvant nécessiter quelques étapes de migration de votre part.
- Passez au SDK Adapty v3.3.x.
- Plusieurs classes, propriétés et méthodes ont été renommées dans les modules Adapty et AdaptyUI du SDK Adapty.
- Désormais, la méthode
SetLogLevelaccepte un callback en argument. - Désormais, la méthode
PresentCodeRedemptionSheetaccepte un callback en argument. - Modifiez la façon dont la vue du paywall est créée.
- Supprimez la méthode
GetProductsIntroductoryOfferEligibility. - Enregistrez les paywalls de secours dans des fichiers séparés (un par plateforme) dans
Assets/StreamingAssets/et transmettez les noms de fichiers à la méthodeSetFallbackPaywalls. - Mettez à jour la procédure d’achat.
- Mettez à jour la gestion des événements du Paywall Builder.
- Mettez à jour la gestion des erreurs du paywall Paywall Builder.
- Mettez à jour les configurations d’intégration pour Adjust, Amplitude, AppMetrica, Appsflyer, Branch, Firebase et Google Analytics, Mixpanel, OneSignal, Pushwoosh.
- Mettez à jour l’implémentation du mode Observer.
- Mettez à jour l’initialisation du plugin Unity avec un appel
Activateexplicite.
Mettre à jour le SDK Unity Adapty vers la version 3.3.x
Jusqu’à cette version, le SDK Adapty était le SDK principal et obligatoire pour le bon fonctionnement d’Adapty dans votre application, tandis que le SDK AdaptyUI était un SDK optionnel, nécessaire uniquement si vous utilisiez le Paywall Builder d’Adapty.
À partir de la version 3.3.0, le SDK AdaptyUI est déprécié et AdaptyUI est intégré au SDK Adapty en tant que module. En raison de ces changements, vous devez supprimer le SDK AdaptyUI et réinstaller le SDK Adapty.
- Supprimez les dépendances de packages AdaptySDK et AdaptyUISDK de votre projet.
- Supprimez les dossiers AdaptySDK et AdaptyUISDK.
- Importez à nouveau le package AdaptySDK comme décrit sur la page Installation et configuration du SDK Adapty pour Unity.
Renommages
- Renommer dans le module Adapty :
| Ancienne version | Nouvelle version |
|---|---|
| Adapty.sdkVersion | Adapty.SDKVersion |
| Adapty.LogLevel | AdaptyLogLevel |
| Adapty.Paywall | AdaptyPaywall |
| Adapty.PaywallFetchPolicy | AdaptyPaywallFetchPolicy |
| PaywallProduct | AdaptyPaywallProduct |
| Adapty.Profile | AdaptyProfile |
| Adapty.ProfileParameters | AdaptyProfileParameters |
| ProfileGender | AdaptyProfileGender |
| Error | AdaptyError |
-
Renommages dans le module AdaptyUI :
Ancienne version Nouvelle version CreatePaywallView CreateView PresentPaywallView PresentView DismissPaywallView DismissView AdaptyUI.View AdaptyUIView AdaptyUI.Action AdaptyUIUserAction
Modifier la méthode SetLogLevel
Désormais, la méthode SetLogLevel accepte un callback en argument.
- Adapty.SetLogLevel(Adapty.LogLevel.Verbose);
+ Adapty.SetLogLevel(Adapty.LogLevel.Verbose, null); // or you can pass the callback to handle the possible error
Modifier la méthode PresentCodeRedemptionSheet
Désormais, la méthode PresentCodeRedemptionSheet accepte un callback en argument.
- Adapty.PresentCodeRedemptionSheet();
+ Adapty.PresentCodeRedemptionSheet(null); // or you can pass the callback to handle the possible error
Modifier la façon dont la vue du paywall est créée
Pour un exemple de code complet, consultez Récupérer la configuration de vue d’un paywall conçu avec le Paywall Builder.
+ var parameters = new AdaptyUICreateViewParameters()
+ .SetPreloadProducts(true);
- AdaptyUI.CreatePaywallView(
+ AdaptyUI.CreateView(
paywall,
- preloadProducts: true,
+ parameters,
(view, error) => {
// use the view
});
Supprimer la méthode GetProductsIntroductoryOfferEligibility
Avant la version 3.3.0 du SDK Adapty iOS, l’objet produit incluait toujours les offres, quelle que soit l’éligibilité de l’utilisateur. Vous deviez vérifier manuellement l’éligibilité avant d’utiliser l’offre.
Désormais, l’objet produit n’inclut une offre que si l’utilisateur y est éligible. Vous n’avez donc plus besoin de vérifier l’éligibilité — si une offre est présente, l’utilisateur est éligible.
Méthode de mise à jour pour fournir des paywalls de secours
Jusqu’à cette version, les paywalls de secours étaient transmis sous forme de JSON sérialisé. À partir de la v 3.3.0, le mécanisme change :
- Enregistrez les paywalls de secours dans des fichiers situés dans
/Assets/StreamingAssets/, un fichier pour Android et un autre pour iOS. - Transmettez les noms de fichiers à la méthode
SetFallbackPaywalls.
Votre code sera modifié de la façon suivante :
using AdaptySDK;
void SetFallBackPaywalls() {
+ #if UNITY_IOS
+ var assetId = "adapty_fallback_ios.json";
+ #elif UNITY_ANDROID
+ var assetId = "adapty_fallback_android.json";
+ #else
+ var assetId = "";
+ #endif
- Adapty.SetFallbackPaywalls("FALLBACK_PAYWALLS_JSON_STRING", (error) => {
+ Adapty.SetFallbackPaywalls(assetId, (error) => {
// handle the error
});
}
Consultez l’exemple de code final sur la page Utiliser les paywalls de secours dans Unity.
Mise à jour du processus d’achat
Les achats précédemment annulés et en attente étaient considérés comme des erreurs et renvoyaient respectivement les codes PaymentCancelled et PendingPurchase.
Désormais, une nouvelle classe AdaptyPurchaseResultType est utilisée pour traiter les achats annulés, réussis et en attente. Mettez à jour le code d’achat de la façon suivante :
using AdaptySDK;
void MakePurchase(AdaptyPaywallProduct product) {
- Adapty.MakePurchase(product, (profile, error) => {
- // handle successfull purchase
+ Adapty.MakePurchase(product, (result, error) => {
+ switch (result.Type) {
+ case AdaptyPurchaseResultType.Pending:
+ // handle pending purchase
+ break;
+ case AdaptyPurchaseResultType.UserCancelled:
+ // handle purchase cancellation
+ break;
+ case AdaptyPurchaseResultType.Success:
+ var profile = result.Profile;
+ // handle successful purchase
+ break;
+ default:
+ break;
}
});
}
Consultez l’exemple de code final sur la page Effectuer des achats dans l’application mobile.
Mettre à jour la gestion des événements du Paywall Builder
Les achats annulés et en attente ne sont plus considérés comme des erreurs ; tous ces cas sont désormais traités via la méthode PaywallViewDidFinishPurchase.
-
Supprimez le traitement de l’événement d’achat annulé.
-
Mettez à jour la gestion de l’événement d’achat réussi de la façon suivante :
- public void OnFinishPurchase(
- AdaptyUI.View view,
- Adapty.PaywallProduct product,
- Adapty.Profile profile
- ) { }
+ public void PaywallViewDidFinishPurchase(
+ AdaptyUIView view,
+ AdaptyPaywallProduct product,
+ AdaptyPurchaseResult purchasedResult
+ ) { }
-
Mettre à jour la gestion des actions :
- public void OnPerformAction( - AdaptyUI.View view, - AdaptyUI.Action action - ) { + public void PaywallViewDidPerformAction( + AdaptyUIView view, + AdaptyUIUserAction action + ) { switch (action.Type) { - case AdaptyUI.ActionType.Close: + case AdaptyUIUserActionType.Close: view.Dismiss(null); break; - case AdaptyUI.ActionType.OpenUrl: + case AdaptyUIUserActionType.OpenUrl: var urlString = action.Value; if (urlString != null { Application.OpenURL(urlString); } default: // handle other events break; } } -
Mettez à jour la gestion du début d’achat :
- public void OnSelectProduct( - AdaptyUI.View view, - Adapty.PaywallProduct product - ) { } + public void PaywallViewDidSelectProduct( + AdaptyUIView view, + string productId + ) { } -
Mettez à jour la gestion de l’échec d’achat :
- public void OnFailPurchase(
- AdaptyUI.View view,
- Adapty.PaywallProduct product,
- Adapty.Error error
- ) { }
+ public void PaywallViewDidFailPurchase(
+ AdaptyUIView view,
+ AdaptyPaywallProduct product,
+ AdaptyError error
+ ) { }
- Mettez à jour la gestion de l’événement de restauration réussie :
- public void OnFailRestore(
- AdaptyUI.View view,
- Adapty.Error error
- ) { }
+ public void PaywallViewDidFailRestore(
+ AdaptyUIView view,
+ AdaptyError error
+ ) { }
Consultez l’exemple de code final sur la page Gérer les événements de paywall.
Mise à jour de la gestion des erreurs des paywalls du Paywall Builder
La gestion des erreurs a également changé, veuillez mettre à jour votre code selon les instructions ci-dessous.
-
Mettez à jour la gestion des erreurs de chargement des produits :
- public void OnFailLoadingProducts( - AdaptyUI.View view, - Adapty.Error error - ) { } + public void PaywallViewDidFailLoadingProducts( + AdaptyUIView view, + AdaptyError error + ) { } -
Mettez à jour la gestion des erreurs de rendu :
- public void OnFailRendering( - AdaptyUI.View view, - Adapty.Error error - ) { } + public void PaywallViewDidFailRendering( + AdaptyUIView view, + AdaptyError error + ) { }
Mettre à jour la configuration du SDK d’intégration tiers
À partir d’Adapty Unity SDK 3.3.0, nous avons mis à jour l’API publique de la méthode updateAttribution. Auparavant, elle acceptait un dictionnaire [AnyHashable: Any], vous permettant de passer directement des objets d’attribution depuis différents services. Désormais, elle requiert un [String: any Sendable], vous devrez donc convertir les objets d’attribution avant de les transmettre.
Pour garantir le bon fonctionnement des intégrations avec Adapty Unity SDK 3.3.0 et versions ultérieures, mettez à jour les configurations de votre SDK pour les intégrations suivantes, comme décrit dans les sections ci-dessous.
Adjust
Mettez à jour le code de votre application mobile comme indiqué ci-dessous. Pour un exemple de code complet, consultez la configuration du SDK pour l’intégration Adjust.
- using static AdaptySDK.Adapty;
using AdaptySDK;
Adjust.GetAdid((adid) => {
- Adjust.GetAttribution((attribution) => {
- Dictionary<String, object> data = new Dictionary<String, object>();
-
- data["network"] = attribution.Network;
- data["campaign"] = attribution.Campaign;
- data["adgroup"] = attribution.Adgroup;
- data["creative"] = attribution.Creative;
-
- String attributionString = JsonUtility.ToJson(data);
- Adapty.UpdateAttribution(attributionString, AttributionSource.Adjust, adid, (error) => {
- // handle the error
- });
+ if (adid != null) {
+ Adapty.SetIntegrationIdentifier(
+ "adjust_device_id",
+ adid,
+ (error) => {
+ // handle the error
+ });
}
});
Adjust.GetAttribution((attribution) => {
Dictionary<String, object> data = new Dictionary<String, object>();
data["network"] = attribution.Network;
data["campaign"] = attribution.Campaign;
data["adgroup"] = attribution.Adgroup;
data["creative"] = attribution.Creative;
String attributionString = JsonUtility.ToJson(data);
- Adapty.UpdateAttribution(attributionString, AttributionSource.Adjust, adid, (error) => {
+ Adapty.UpdateAttribution(attributionString, "adjust", (error) => {
// handle the error
});
});
Amplitude
Mettez à jour le code de votre application mobile comme indiqué ci-dessous. Pour un exemple de code complet, consultez la configuration du SDK pour l’intégration Amplitude.
using AdaptySDK;
- var builder = new Adapty.ProfileParameters.Builder();
- builder.SetAmplitudeUserId("YOUR_AMPLITUDE_USER_ID");
- builder.SetAmplitudeDeviceId(amplitude.getDeviceId());
- Adapty.UpdateProfile(builder.Build(), (error) => {
- // handle error
- });
+ Adapty.SetIntegrationIdentifier(
+ "amplitude_user_id",
+ "YOUR_AMPLITUDE_USER_ID",
+ (error) => {
+ // handle the error
+ });
+ Adapty.SetIntegrationIdentifier(
+ "amplitude_device_id",
+ amplitude.getDeviceId(),
+ (error) => {
+ // handle the error
+ });
AppMetrica
Mettez à jour le code de votre application mobile comme indiqué ci-dessous. Pour un exemple de code complet, consultez la configuration du SDK pour l’intégration AppMetrica.
using AdaptySDK;
- var deviceId = AppMetrica.GetDeviceId();
- if (deviceId != null {
- var builder = new Adapty.ProfileParameters.Builder();
- builder.SetAppmetricaProfileId("YOUR_ADAPTY_CUSTOMER_USER_ID");
- builder.SetAppmetricaDeviceId(deviceId);
- Adapty.UpdateProfile(builder.Build(), (error) => {
- // handle error
- });
- }
+ var deviceId = AppMetrica.GetDeviceId();
+ if (deviceId != null {
+ Adapty.SetIntegrationIdentifier(
+ "appmetrica_device_id",
+ deviceId,
+ (error) => {
+ // handle the error
+ });
+
+ Adapty.SetIntegrationIdentifier(
+ "appmetrica_profile_id",
+ "YOUR_ADAPTY_CUSTOMER_USER_ID",
+ (error) => {
+ // handle the error
+ });
+ }
AppsFlyer
Mettez à jour le code de votre application mobile comme indiqué ci-dessous. Pour un exemple de code complet, consultez la configuration du SDK pour l’intégration AppsFlyer.
using AppsFlyerSDK;
using AdaptySDK;
// before SDK initialization
AppsFlyer.getConversionData(this.name);
// in your IAppsFlyerConversionData
void onConversionDataSuccess(string conversionData) {
// It's important to include the network user ID
- string appsFlyerId = AppsFlyer.getAppsFlyerId();
- Adapty.UpdateAttribution(conversionData, AttributionSource.Appsflyer, appsFlyerId, (error) => {
+ string appsFlyerId = AppsFlyer.getAppsFlyerId();
+
+ Adapty.SetIntegrationIdentifier(
+ "appsflyer_id",
+ appsFlyerId,
+ (error) => {
// handle the error
});
+
+ Adapty.UpdateAttribution(
+ conversionData,
+ "appsflyer",
+ (error) => {
+ // handle the error
+ });
}
Branch
Mettez à jour le code de votre application mobile comme indiqué ci-dessous. Pour un exemple de code complet, consultez la configuration du SDK pour l’intégration Branch.
using AdaptySDK;
- class YourBranchImplementation {
- func initializeBranch() {
- Branch.getInstance().initSession(launchOptions: launchOptions) { (data, error) in
- if let data {
- Adapty.updateAttribution(data, source: .branch)
- }
- }
- }
- }
+ Branch.initSession(delegate(Dictionary<string, object> parameters, string error) {
+ string attributionString = JsonUtility.ToJson(parameters);
+
+ Adapty.UpdateAttribution(
+ attributionString,
+ "branch",
+ (error) => {
+ // handle the error
+ });
+ });
Firebase et Google Analytics
Mettez à jour le code de votre application mobile comme indiqué ci-dessous. Pour un exemple de code complet, consultez la configuration du SDK pour l’intégration Firebase et Google Analytics.
// We suppose FirebaseAnalytics Unity Plugin is already installed
using AdaptySDK;
Firebase.Analytics
.FirebaseAnalytics
.GetAnalyticsInstanceIdAsync()
.ContinueWithOnMainThread((task) => {
if (!task.IsCompletedSuccessfully) {
// handle error
return;
}
var firebaseId = task.Result
var builder = new Adapty.ProfileParameters.Builder();
- builder.SetFirebaseAppInstanceId(firebaseId);
-
- Adapty.UpdateProfile(builder.Build(), (error) => {
- // handle error
+ Adapty.SetIntegrationIdentifier(
+ "firebase_app_instance_id",
+ firebaseId,
+ (error) => {
+ // handle the error
});
});
Mixpanel
Mettez à jour le code de votre application mobile comme indiqué ci-dessous. Pour un exemple de code complet, consultez la configuration du SDK pour l’intégration Mixpanel.
using AdaptySDK;
- var builder = new Adapty.ProfileParameters.Builder();
- builder.SetMixpanelUserId(Mixpanel.DistinctId);
- Adapty.UpdateProfile(builder.Build(), (error) => {
- // handle error
- });
+ var distinctId = Mixpanel.DistinctId;
+ if (distinctId != null) {
+ Adapty.SetIntegrationIdentifier(
+ "mixpanel_user_id",
+ distinctId,
+ (error) => {
+ // handle the error
+ });
+ }
OneSignal
Mettez à jour le code de votre application mobile comme indiqué ci-dessous. Pour un exemple de code complet, consultez la configuration du SDK pour l’intégration OneSignal.
using AdaptySDK;
- using OneSignalSDK;
- var pushUserId = OneSignal.Default.PushSubscriptionState.userId;
- var builder = new Adapty.ProfileParameters.Builder();
- builder.SetOneSignalPlayerId(pushUserId);
- Adapty.UpdateProfile(builder.Build(), (error) => {
- // handle error
- });
+ var distinctId = Mixpanel.DistinctId;
+ if (distinctId != null) {
+ Adapty.SetIntegrationIdentifier(
+ "mixpanel_user_id",
+ distinctId,
+ (error) => {
+ // handle the error
+ });
+ }
Pushwoosh
Mettez à jour le code de votre application mobile comme indiqué ci-dessous. Pour un exemple de code complet, consultez la configuration du SDK pour l’intégration Pushwoosh.
using AdaptySDK;
- var builder = new Adapty.ProfileParameters.Builder();
- builder.SetPushwooshHWID(Pushwoosh.Instance.HWID);
- Adapty.UpdateProfile(builder.Build(), (error) => {
- // handle error
- });
+ Adapty.SetIntegrationIdentifier(
+ "pushwoosh_hwid",
+ Pushwoosh.Instance.HWID,
+ (error) => {
+ // handle the error
+ });
Mettre à jour l’implémentation du mode Observer
Mettez à jour la façon dont vous associez les paywalls aux transactions. Auparavant, vous utilisiez la méthode setVariationId pour assigner le variationId. Vous pouvez maintenant inclure le variationId directement lors de l’enregistrement de la transaction grâce à la nouvelle méthode reportTransaction. Consultez l’exemple de code complet dans Associer des paywalls aux transactions d’achat en mode Observer.
// every time when calling transaction.finish()
- Adapty.SetVariationForTransaction("<variationId>", "<transactionId>", (error) => {
- if(error != null) {
- // handle the error
- return;
- }
-
- // successful binding
- });
+ Adapty.ReportTransaction(
+ "YOUR_TRANSACTION_ID",
+ "PAYWALL_VARIATION_ID", // optional
+ (error) => {
+ // handle the error
+ });
Mettre à jour l’initialisation du plugin Unity
À partir de la version 3.3.0 de l’Adapty Unity SDK, l’appel explicite de la méthode Activate lors de l’initialisation du plugin est obligatoire :
Adapty.Activate(builder.Build(), (error) => {
if (error != null) {
// handle the error
return;
}
});