Skip to content

Commit

Permalink
Merge pull request #278 from AppsFlyerSDK/releases/6.x.x/6.14.x/6.14.…
Browse files Browse the repository at this point in the history
…3-rc1

Releases/6.x.x/6.14.x/6.14.3 rc1
  • Loading branch information
af-vero authored May 2, 2024
2 parents 2d15150 + 579c181 commit b942afd
Show file tree
Hide file tree
Showing 31 changed files with 507 additions and 34 deletions.
35 changes: 35 additions & 0 deletions Assets/AppsFlyer/AFPurchaseDetailsAndroid.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using System;
using System.Collections.Generic;

namespace AppsFlyerSDK
{
public enum AFPurchaseType
{
Subscription = 0,
OneTimePurchase = 1
}

/// <summary>
//
/// </summary>
public class AFPurchaseDetailsAndroid

{
public AFPurchaseType purchaseType { get; private set; }
public string purchaseToken { get; private set; }
public string productId { get; private set; }
public string price { get; private set; }
public string currency { get; private set; }

public AFPurchaseDetailsAndroid(AFPurchaseType type, String purchaseToken, String productId, String price, String currency)
{
this.purchaseType = type;
this.purchaseToken = purchaseToken;
this.productId = productId;
this.price = price;
this.currency = currency;
}

}

}
11 changes: 11 additions & 0 deletions Assets/AppsFlyer/AFPurchaseDetailsAndroid.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

30 changes: 30 additions & 0 deletions Assets/AppsFlyer/AFSDKPurchaseDetailsIOS.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;

namespace AppsFlyerSDK
{
/// <summary>
//
/// </summary>
public class AFSDKPurchaseDetailsIOS
{
public string productId { get; private set; }
public string price { get; private set; }
public string currency { get; private set; }
public string transactionId { get; private set; }

private AFSDKPurchaseDetailsIOS(string productId, string price, string currency, string transactionId)
{
this.productId = productId;
this.price = price;
this.currency = currency;
this.transactionId = transactionId;
}

public static AFSDKPurchaseDetailsIOS Init(string productId, string price, string currency, string transactionId)
{
return new AFSDKPurchaseDetailsIOS(productId, price, currency, transactionId);
}
}

}
11 changes: 11 additions & 0 deletions Assets/AppsFlyer/AFSDKPurchaseDetailsIOS.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

38 changes: 38 additions & 0 deletions Assets/AppsFlyer/AFSDKValidateAndLogResult.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
using System;
using System.Collections.Generic;

namespace AppsFlyerSDK
{
public enum AFSDKValidateAndLogStatus
{
AFSDKValidateAndLogStatusSuccess,
AFSDKValidateAndLogStatusFailure,
AFSDKValidateAndLogStatusError
}


/// <summary>
//
/// </summary>
public class AFSDKValidateAndLogResult
{
public AFSDKValidateAndLogStatus status { get; private set; }
public Dictionary<string, object> result { get; private set; }
public Dictionary<string, object> errorData { get; private set; }
public string error { get; private set; }

private AFSDKValidateAndLogResult(AFSDKValidateAndLogStatus status, Dictionary<string, object> result, Dictionary<string, object> errorData, string error)
{
this.status = status;
this.result = result;
this.errorData = errorData;
this.error = error;
}

public static AFSDKValidateAndLogResult Init(AFSDKValidateAndLogStatus status, Dictionary<string, object> result, Dictionary<string, object> errorData, string error)
{
return new AFSDKValidateAndLogResult(status, result, errorData, error);
}
}

}
11 changes: 11 additions & 0 deletions Assets/AppsFlyer/AFSDKValidateAndLogResult.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 23 additions & 3 deletions Assets/AppsFlyer/AppsFlyer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace AppsFlyerSDK
public class AppsFlyer : MonoBehaviour
{

public static readonly string kAppsFlyerPluginVersion = "6.14.0";
public static readonly string kAppsFlyerPluginVersion = "6.14.3";
public static string CallBackObjectName = null;
private static EventHandler onRequestResponse;
private static EventHandler onInAppResponse;
Expand Down Expand Up @@ -756,12 +756,22 @@ public static void handlePushNotifications()
}
}

public static void validateAndSendInAppPurchase(string productIdentifier, string price, string currency, string tranactionId, Dictionary<string, string> additionalParameters, MonoBehaviour gameObject)
public static void validateAndSendInAppPurchase(string productIdentifier, string price, string currency, string transactionId, Dictionary<string, string> additionalParameters, MonoBehaviour gameObject)
{
if (instance != null && instance is IAppsFlyerIOSBridge)
{
IAppsFlyerIOSBridge appsFlyeriOSInstance = (IAppsFlyerIOSBridge)instance;
appsFlyeriOSInstance.validateAndSendInAppPurchase(productIdentifier, price, currency, tranactionId, additionalParameters, gameObject);
appsFlyeriOSInstance.validateAndSendInAppPurchase(productIdentifier, price, currency, transactionId, additionalParameters, gameObject);
}
}

// V2
public static void validateAndSendInAppPurchase(AFSDKPurchaseDetailsIOS details, Dictionary<string, string> extraEventValues, MonoBehaviour gameObject)
{
if (instance != null && instance is IAppsFlyerIOSBridge)
{
IAppsFlyerIOSBridge appsFlyeriOSInstance = (IAppsFlyerIOSBridge)instance;
appsFlyeriOSInstance.validateAndSendInAppPurchase(details, extraEventValues, gameObject);
}
}

Expand All @@ -774,6 +784,16 @@ public static void validateAndSendInAppPurchase(string publicKey, string signatu
}
}

// V2
public static void validateAndSendInAppPurchase(AFPurchaseDetailsAndroid details, Dictionary<string, string> additionalParameters, MonoBehaviour gameObject)
{
if (instance != null && instance is IAppsFlyerAndroidBridge)
{
IAppsFlyerAndroidBridge appsFlyerAndroidInstance = (IAppsFlyerAndroidBridge)instance;
appsFlyerAndroidInstance.validateAndSendInAppPurchase(details, additionalParameters, gameObject);
}
}

public static void handleOpenUrl(string url, string sourceApplication, string annotation)
{
if (instance != null && instance is IAppsFlyerIOSBridge)
Expand Down
13 changes: 13 additions & 0 deletions Assets/AppsFlyer/AppsFlyerAndroid.cs
Original file line number Diff line number Diff line change
Expand Up @@ -484,6 +484,19 @@ public void validateAndSendInAppPurchase(string publicKey, string signature, str
#endif
}

/// <summary>
/// API for server verification of in-app purchases.
/// An af_purchase event with the relevant values will be automatically sent if the validation is successful.
/// </summary>
/// <param name="details">AFPurchaseDetailsAndroid instance.</param>
/// <param name="additionalParameters">additionalParameters Freehand parameters to be sent with the purchase (if validated).</param>
public void validateAndSendInAppPurchase(AFPurchaseDetailsAndroid details, Dictionary<string, string> additionalParameters, MonoBehaviour gameObject)
{
#if !UNITY_EDITOR
appsFlyerAndroid.CallStatic("validateAndTrackInAppPurchaseV2", (int)details.purchaseType, details.purchaseToken, details.productId, details.price, details.currency, convertDictionaryToJavaMap(additionalParameters), gameObject ? gameObject.name : null);
#endif
}

/// <summary>
/// Was the stopSDK(boolean) API set to true.
/// </summary>
Expand Down
31 changes: 26 additions & 5 deletions Assets/AppsFlyer/AppsFlyeriOS.cs
Original file line number Diff line number Diff line change
Expand Up @@ -318,17 +318,30 @@ public void setPhoneNumber(string phoneNumber){
}

/// <summary>
/// To send and validate in app purchases you can call this method from the processPurchase method.
/// To send and validate in app purchases you can call this method from the processPurchase method - please use v2.
/// </summary>
/// <param name="productIdentifier">The product identifier.</param>
/// <param name="price">The product price.</param>
/// <param name="currency">The product currency.</param>
/// <param name="tranactionId">The purchase transaction Id.</param>
/// <param name="transactionId">The purchase transaction Id.</param>
/// <param name="additionalParameters">The additional param, which you want to receive it in the raw reports.</param>
public void validateAndSendInAppPurchase(string productIdentifier, string price, string currency, string tranactionId, Dictionary<string, string> additionalParameters, MonoBehaviour gameObject)
public void validateAndSendInAppPurchase(string productIdentifier, string price, string currency, string transactionId, Dictionary<string, string> additionalParameters, MonoBehaviour gameObject)
{
#if !UNITY_EDITOR
_validateAndSendInAppPurchase(productIdentifier, price, currency, transactionId, AFMiniJSON.Json.Serialize(additionalParameters), gameObject ? gameObject.name : null);
#endif
}

/// <summary>
/// V2
/// To send and validate in app purchases you can call this method from the processPurchase method.
/// </summary>
/// <param name="details">The AFSDKPurchaseDetailsIOS instance.</param>
/// <param name="extraEventValues">The extra params, which you want to receive it in the raw reports.</param>
public void validateAndSendInAppPurchase(AFSDKPurchaseDetailsIOS details, Dictionary<string, string> extraEventValues, MonoBehaviour gameObject)
{
#if !UNITY_EDITOR
_validateAndSendInAppPurchase(productIdentifier, price, currency, tranactionId, AFMiniJSON.Json.Serialize(additionalParameters), gameObject ? gameObject.name : null);
_validateAndSendInAppPurchaseV2(details.productId, details.price, details.currency, details.transactionId, AFMiniJSON.Json.Serialize(extraEventValues), gameObject ? gameObject.name : null);
#endif
}

Expand Down Expand Up @@ -798,7 +811,15 @@ public static void getCallback(string gameObjectName, string callbackName, strin
#elif UNITY_STANDALONE_OSX
[DllImport("AppsFlyerBundle")]
#endif
private static extern void _validateAndSendInAppPurchase(string productIdentifier, string price, string currency, string tranactionId, string additionalParameters, string objectName);
private static extern void _validateAndSendInAppPurchase(string productIdentifier, string price, string currency, string transactionId, string additionalParameters, string objectName);


#if UNITY_IOS
[DllImport("__Internal")]
#elif UNITY_STANDALONE_OSX
[DllImport("AppsFlyerBundle")]
#endif
private static extern void _validateAndSendInAppPurchaseV2(string product, string price, string currency, string transactionId, string extraEventValues, string objectName);

#if UNITY_IOS
[DllImport("__Internal")]
Expand Down
6 changes: 3 additions & 3 deletions Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@
<dependencies>

<androidPackages>
<androidPackage spec="com.appsflyer:af-android-sdk:6.13.0">
<androidPackage spec="com.appsflyer:af-android-sdk:6.14.0">
</androidPackage>
<androidPackage spec="com.appsflyer:unity-wrapper:6.14.0">
<androidPackage spec="com.appsflyer:unity-wrapper:6.14.3">
</androidPackage>
<androidPackage spec="com.android.installreferrer:installreferrer:2.1">
</androidPackage>
</androidPackages>

<iosPods>
<iosPod name="AppsFlyerFramework" version="6.14.0" minTargetSdk="9.0">
<iosPod name="AppsFlyerFramework" version="6.14.3" minTargetSdk="12.0">
</iosPod>
</iosPods>

Expand Down
1 change: 1 addition & 0 deletions Assets/AppsFlyer/IAppsFlyerAndroidBridge.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ public interface IAppsFlyerAndroidBridge : IAppsFlyerNativeBridge
string getAttributionId();
void handlePushNotifications();
void validateAndSendInAppPurchase(string publicKey, string signature, string purchaseData, string price, string currency, Dictionary<string, string> additionalParameters, MonoBehaviour gameObject);
void validateAndSendInAppPurchase(AFPurchaseDetailsAndroid details, Dictionary<string, string> additionalParameters, MonoBehaviour gameObject);
void setCollectOaid(bool isCollect);
void setDisableAdvertisingIdentifiers(bool disable);
void setDisableNetworkData(bool disable);
Expand Down
3 changes: 2 additions & 1 deletion Assets/AppsFlyer/IAppsFlyerIOSBridge.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ public interface IAppsFlyerIOSBridge : IAppsFlyerNativeBridge
void setDisableCollectIAd(bool disableCollectIAd);
void setUseReceiptValidationSandbox(bool useReceiptValidationSandbox);
void setUseUninstallSandbox(bool useUninstallSandbox);
void validateAndSendInAppPurchase(string productIdentifier, string price, string currency, string tranactionId, Dictionary<string, string> additionalParameters, MonoBehaviour gameObject);
void validateAndSendInAppPurchase(string productIdentifier, string price, string currency, string transactionId, Dictionary<string, string> additionalParameters, MonoBehaviour gameObject);
void validateAndSendInAppPurchase(AFSDKPurchaseDetailsIOS details, Dictionary<string, string> extraEventValues, MonoBehaviour gameObject);
void registerUninstall(byte[] deviceToken);
void handleOpenUrl(string url, string sourceApplication, string annotation);
void waitForATTUserAuthorizationWithTimeoutInterval(int timeoutInterval);
Expand Down
19 changes: 19 additions & 0 deletions Assets/AppsFlyer/IAppsFlyerValidateAndLog.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
namespace AppsFlyerSDK
{
public interface IAppsFlyerValidateAndLog
{
/// <summary>
/// The success callback for validateAndSendInAppPurchase API.
/// For Android : the callback will return JSON string.
/// For iOS : the callback will return a JSON string from apples verifyReceipt API.
/// </summary>
/// <param name="result"></param>
void onValidateAndLogComplete(string result);

/// <summary>
/// The error callback for validateAndSendInAppPurchase API.
/// </summary>
/// <param name="error">A string describing the error.</param>
void onValidateAndLogFailure(string error);
}
}
11 changes: 11 additions & 0 deletions Assets/AppsFlyer/IAppsFlyerValidateAndLog.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions Assets/AppsFlyer/Plugins/iOS/AFUnityUtils.mm
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,21 @@
return nil;
}

static NSDictionary* dictionaryFromNSError(NSError* error) {
if(error){
NSInteger code = [error code];
NSString *localizedDescription = [error localizedDescription];

NSDictionary *errorDictionary = @{
@"code" : @(code) ?: @(-1),
@"localizedDescription" : localizedDescription,
};
return errorDictionary;
}

return nil;
}


static NSArray<NSString*> *NSArrayFromCArray(int length, const char **arr) {
NSMutableArray<NSString *> *res = [[NSMutableArray alloc] init];
Expand Down
3 changes: 3 additions & 0 deletions Assets/AppsFlyer/Plugins/iOS/AppsFlyeriOSWrapper.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,14 @@ static const char* OPEN_STORE_LINK_CALLBACK = "onOpenStoreLinkGenerated";
static const char* START_REQUEST_CALLBACK = "requestResponseReceived";
static const char* IN_APP_RESPONSE_CALLBACK = "inAppResponseReceived";
static const char* ON_DEEPLINKING = "onDeepLinking";
static const char* VALIDATE_AND_LOG_V2_CALLBACK = "onValidateAndLogComplete";
static const char* VALIDATE_AND_LOG_V2_ERROR_CALLBACK = "onValidateAndLogFailure";


static NSString* validateObjectName = @"";
static NSString* openStoreObjectName = @"";
static NSString* generateInviteObjectName = @"";
static NSString* validateAndLogObjectName = @"";
static NSString* startRequestObjectName = @"";
static NSString* inAppRequestObjectName = @"";
static NSString* onDeeplinkingObjectName = @"";
Expand Down
Loading

0 comments on commit b942afd

Please sign in to comment.