From 337bf0c73a858657446f29e714cc82973ea5b6cc Mon Sep 17 00:00:00 2001 From: Julian Richard Contreras Date: Wed, 23 Jun 2021 14:06:19 -0400 Subject: [PATCH] Updating Unity plugins for version 3.4.0 --- Assets/Plugins/Android/appboy-unity.aar | Bin 31065 -> 34427 bytes Assets/Plugins/Appboy/AppboyBinding.cs | 34 ++++++++++ Assets/Plugins/Appboy/BrazeAndroidPlatform.cs | 8 +++ Assets/Plugins/Appboy/BrazePlatform.cs | 2 + Assets/Plugins/Appboy/BrazeiOSPlatform.cs | 14 +++++ Assets/Plugins/iOS/AppboyBinding.m | 8 +++ Assets/Plugins/iOS/AppboyUnityManager.h | 13 ++++ Assets/Plugins/iOS/AppboyUnityManager.mm | 58 ++++++++++++++++-- CHANGELOG.md | 12 ++++ 9 files changed, 143 insertions(+), 6 deletions(-) diff --git a/Assets/Plugins/Android/appboy-unity.aar b/Assets/Plugins/Android/appboy-unity.aar index 771c552d706c3454c15d3ee8872706a6237d618e..7d4b7375d96ec1eb6a7f5b56f801977af54018c2 100644 GIT binary patch delta 29321 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 AXaE2J delta 25928 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 + /// Sets In-App Messages to display immediately when triggered. + /// + IAM_DISPLAY_NOW = 0, + /// + /// Sets In-App Messages to display at a later time and be saved in a stack. + /// + IAM_DISPLAY_LATER = 1, + /// + /// Sets In-App Messages to be discarded after being triggered. + /// + IAM_DISCARD = 2, + // TODO - Blocked by SDK-1596 + // /// + // /// Requests that any In-App Message previously saved to a stack to be displayed immediately. + // /// + // REQUEST_IAM_DISPLAY = 3 + } + public delegate void PushPromptResponseReceived(bool granted); public delegate void PushTokenReceivedFromSystem(string token); @@ -86,6 +106,8 @@ public static BrazePlatform mBinding { return new BrazeAndroidPlatform(); #elif UNITY_IOS return new BrazeiOSPlatform(); + #else + return null; #endif } } @@ -598,5 +620,17 @@ public static void ConfigureListener(BrazeUnityMessageType messageType, string g mBinding.ConfigureListener(messageType, gameobject, method); #endif } + + public static void SetInAppMessageDisplayAction(BrazeUnityInAppMessageDisplayActionType actionType) { + #if HAS_BRAZE_SDK + mBinding.SetInAppMessageDisplayAction(actionType); + #endif + } + + public static void DisplayContentCards() { + #if HAS_BRAZE_SDK + mBinding.DisplayContentCards(); + #endif + } } } diff --git a/Assets/Plugins/Appboy/BrazeAndroidPlatform.cs b/Assets/Plugins/Appboy/BrazeAndroidPlatform.cs index e0df4ea2..826fb008 100644 --- a/Assets/Plugins/Appboy/BrazeAndroidPlatform.cs +++ b/Assets/Plugins/Appboy/BrazeAndroidPlatform.cs @@ -474,6 +474,14 @@ public void AddAlias(string alias, string label) { public void ConfigureListener(BrazeUnityMessageType messageType, string gameobject, string method) { UnityConfigurationProvider.Call("configureListener", (int)messageType, gameobject, method); } + + public void SetInAppMessageDisplayAction(BrazeUnityInAppMessageDisplayActionType actionType) { + AppboyUnityActivity.Call("onNewUnityInAppMessageManagerAction", (int)actionType); + } + + public void DisplayContentCards() { + AppboyUnityActivity.Call("launchContentCardsActivity"); + } } #endif diff --git a/Assets/Plugins/Appboy/BrazePlatform.cs b/Assets/Plugins/Appboy/BrazePlatform.cs index 7fa00c53..ce60a4da 100644 --- a/Assets/Plugins/Appboy/BrazePlatform.cs +++ b/Assets/Plugins/Appboy/BrazePlatform.cs @@ -116,4 +116,6 @@ string profileImageUrl void RequestImmediateDataFlush(); void AddAlias(string alias, string label); void ConfigureListener(BrazeUnityMessageType messageType, string gameobject, string method); + void SetInAppMessageDisplayAction(BrazeUnityInAppMessageDisplayActionType actionType); + void DisplayContentCards(); } diff --git a/Assets/Plugins/Appboy/BrazeiOSPlatform.cs b/Assets/Plugins/Appboy/BrazeiOSPlatform.cs index e3c95acc..772f50dd 100644 --- a/Assets/Plugins/Appboy/BrazeiOSPlatform.cs +++ b/Assets/Plugins/Appboy/BrazeiOSPlatform.cs @@ -92,6 +92,9 @@ public class BrazeiOSPlatform : BrazePlatform { [System.Runtime.InteropServices.DllImport("__Internal")] private static extern void _setUserTwitterData(int twitterUserId, string twitterHandle, string name, string description, int followerCount, int followingCount, int tweetCount, string profileImageUrl); + [System.Runtime.InteropServices.DllImport("__Internal")] + private static extern void _setInAppMessageDisplayAction(int actionType); + [System.Runtime.InteropServices.DllImport("__Internal")] private static extern void _logInAppMessageClicked(string inAppMessageJSONString); @@ -131,6 +134,9 @@ public class BrazeiOSPlatform : BrazePlatform { [System.Runtime.InteropServices.DllImport("__Internal")] private static extern void _requestContentCardsRefreshFromCache(); + [System.Runtime.InteropServices.DllImport("__Internal")] + private static extern void _displayContentCards(); + [System.Runtime.InteropServices.DllImport("__Internal")] private static extern void _logContentCardsDisplayed(); @@ -299,6 +305,10 @@ public void DisplayNextInAppMessage(bool withDelegate) { _displayNextInAppMessage(withDelegate); } + public void SetInAppMessageDisplayAction(BrazeUnityInAppMessageDisplayActionType actionType) { + _setInAppMessageDisplayAction((int)actionType); + } + public void LogInAppMessageClicked(string inAppMessageJSONString) { _logInAppMessageClicked(inAppMessageJSONString); } @@ -351,6 +361,10 @@ public void RequestContentCardsRefreshFromCache() { _requestContentCardsRefreshFromCache(); } + public void DisplayContentCards() { + _displayContentCards(); + } + public void LogContentCardsDisplayed() { _logContentCardsDisplayed(); } diff --git a/Assets/Plugins/iOS/AppboyBinding.m b/Assets/Plugins/iOS/AppboyBinding.m index 96d25967..f0e41c7d 100644 --- a/Assets/Plugins/iOS/AppboyBinding.m +++ b/Assets/Plugins/iOS/AppboyBinding.m @@ -218,6 +218,10 @@ void _displayNextInAppMessage(bool withDelegate) { [[AppboyUnityManager sharedInstance] displayNextInAppMessageWithDelegate:withDelegate]; } +void _setInAppMessageDisplayAction(int actionType) { + [[AppboyUnityManager sharedInstance] setInAppMessageDisplayAction:actionType]; +} + # pragma mark - News Feed analytics void _logCardImpression(const char* cardJSONString) { @@ -256,6 +260,10 @@ void _logContentCardDismissed(const char* cardJSONString) { [[AppboyUnityManager sharedInstance] logContentCardDismissed:GetStringParam(cardJSONString)]; } +void _displayContentCards() { + [[AppboyUnityManager sharedInstance] displayContentCards]; +} + void _logContentCardsDisplayed() { [[Appboy sharedInstance] logContentCardsDisplayed]; } diff --git a/Assets/Plugins/iOS/AppboyUnityManager.h b/Assets/Plugins/iOS/AppboyUnityManager.h index f5acba03..7e50a9e0 100644 --- a/Assets/Plugins/iOS/AppboyUnityManager.h +++ b/Assets/Plugins/iOS/AppboyUnityManager.h @@ -32,6 +32,16 @@ typedef NS_ENUM(NSInteger, ABKUnityMessageType) { ABKContentCardsUpdated = 7 }; +/** + * These must correspond 1:1 to BrazeUnityInAppMessageDisplayActionType in AppboyBinding.cs. + */ +typedef NS_ENUM(NSInteger, ABKUnityInAppMessageDisplayActionType) { + ABKIAMDisplayNow = 0, + ABKIAMDisplayLater = 1, + ABKIAMDiscard = 2, + ABKIAMRequestIAMDisplay = 3 +}; + @interface AppboyUnityManager : NSObject @property (nonatomic,copy) NSDictionary *appboyUnityPlist; @@ -51,6 +61,7 @@ typedef NS_ENUM(NSInteger, ABKUnityMessageType) { @property (nonatomic, copy) NSString *unityPushTokenReceivedFromSystemFunctionName; @property (nonatomic) BOOL sendInternalPushPermissionsPromptResponse; @property (nonatomic) BOOL sendPushTokenReceivedFromSystem; +@property (nonatomic) ABKInAppMessageDisplayChoice displayAction; + (AppboyUnityManager *) sharedInstance; - (NSString *)getApiKeyFromUnity; @@ -65,6 +76,7 @@ typedef NS_ENUM(NSInteger, ABKUnityMessageType) { - (void)logInAppMessageClicked:(NSString *)inAppMessageJSONString; - (void)logInAppMessageButtonClicked:(NSString *)inAppMessageJSONString withButtonID:(NSInteger)buttonID; - (void)displayNextInAppMessageWithDelegate:(BOOL)withDelegate; +- (void)setInAppMessageDisplayAction:(int)actionType; // News Feed - (void)logCardImpression:(NSString *)cardJSONString; @@ -78,6 +90,7 @@ typedef NS_ENUM(NSInteger, ABKUnityMessageType) { - (void)logContentCardDismissed:(NSString *)cardJSONString; - (void)requestContentCardsRefresh; - (void)requestContentCardsFromCache:(NSNotification *)notification; +- (void)displayContentCards; /*! * @discussion Passes the device token to Braze. The caller is responsible for respecting diff --git a/Assets/Plugins/iOS/AppboyUnityManager.mm b/Assets/Plugins/iOS/AppboyUnityManager.mm index 12d070d7..aa19c631 100644 --- a/Assets/Plugins/iOS/AppboyUnityManager.mm +++ b/Assets/Plugins/iOS/AppboyUnityManager.mm @@ -3,6 +3,8 @@ #import #import #import +#import +#import static NSString *const ABKInternalCallback = @"BrazeInternalCallback"; static NSString *const ABKInternalPushPermissionsPromptResponse = @"onPushPromptResponseReceived"; @@ -31,6 +33,16 @@ + (AppboyUnityManager*)sharedInstance { return sharedInstance; } +# pragma mark - Init + +- (instancetype)init { + self = [super init]; + if (self) { + self.displayAction = ABKDisplayInAppMessageNow; + } + return self; +} + # pragma mark - Config - (NSString *)getApiKeyFromUnity { @@ -120,13 +132,39 @@ - (void)getInAppMessageFromString:(NSString *)inAppMessageJSONString withInAppMe # pragma mark - In-app message display - (void)displayNextInAppMessageWithDelegate:(BOOL)withDelegate { - ABKInAppMessageController *delegate = nil; + id delegate = nil; if (withDelegate) { delegate = [Appboy sharedInstance].inAppMessageController.delegate; } [[Appboy sharedInstance].inAppMessageController displayNextInAppMessageWithDelegate:delegate]; } +- (void)setInAppMessageDisplayAction:(int)actionType { + [Appboy sharedInstance].inAppMessageController.delegate = self; + switch ((ABKUnityInAppMessageDisplayActionType)actionType) { + case ABKIAMDisplayNow: + NSLog(@"Setting in-app message display action to ABKDisplayInAppMessageNow."); + self.displayAction = ABKDisplayInAppMessageNow; + break; + case ABKIAMDisplayLater: + NSLog(@"Setting in-app message display action to ABKDisplayInAppMessageLater."); + self.displayAction = ABKDisplayInAppMessageLater; + break; + case ABKIAMDiscard: + NSLog(@"Setting in-app message display action to ABKIAMDiscard."); + self.displayAction = ABKDiscardInAppMessage; + break; + case ABKIAMRequestIAMDisplay: + // FIXME: Blocked by SDK-1596 + NSLog(@"Requesting in-app message display (currently unimplemented)."); + // [[Appboy sharedInstance].inAppMessageController displayNextInAppMessageWithDelegate:nil]; + break; + default: + NSLog(@"Unknown in-app message display action type received."); + return; + } +} + # pragma mark - News Feed analytics - (void)logCardImpression:(NSString *)cardJSONString { @@ -267,6 +305,15 @@ - (void)requestContentCardsFromCache:(NSNotification *)notification { [self unitySendMessageTo:self.unityContentCardsGameObjectName withMethod:self.unityContentCardsCallbackFunctionName withMessage:contentCardsString]; } +# pragma mark - Content Card UI + +- (void)displayContentCards { + ABKContentCardsViewController *contentCards = [[ABKContentCardsViewController alloc] init]; + [ABKUIUtils.activeApplicationViewController presentViewController:contentCards + animated:YES + completion:nil]; +} + # pragma mark - Push - (void)registerPushToken:(NSData *)data { @@ -493,17 +540,16 @@ - (void)userNotificationCenter:(UNUserNotificationCenter *)center */ - (ABKInAppMessageDisplayChoice)beforeInAppMessageDisplayed:(ABKInAppMessage *)inAppMessage { if (self.unityInAppMessageCallbackFunctionName == nil || self.unityInAppMessageGameObjectName == nil) { - NSLog(@"No properly configured game object for in-app messages. Returning ABKDisplayInAppMessageNow.", - self.unityInAppMessageGameObjectName); - return ABKDisplayInAppMessageNow; + NSLog(@"No properly configured game object for in-app messages. Using display action: %ld.", (long)self.displayAction); + return self.displayAction; } NSData *inAppMessageData = [inAppMessage serializeToData]; NSString *dataString = [[NSString alloc] initWithData:inAppMessageData encoding:NSUTF8StringEncoding]; [self unitySendMessageTo:self.unityInAppMessageGameObjectName withMethod:self.unityInAppMessageCallbackFunctionName withMessage:dataString]; if ([self.appboyUnityPlist[ABKUnityHandleInAppMessageDisplayKey] boolValue]) { - NSLog(@"Braze configured to display in-app messages despite presence of game object listener. Returning ABKDisplayInAppMessageNow."); - return ABKDisplayInAppMessageNow; + NSLog(@"Braze configured to display in-app messages despite presence of game object listener. Using display action: %ld.", (long)self.displayAction); + return self.displayAction; } return ABKDiscardInAppMessage; } diff --git a/CHANGELOG.md b/CHANGELOG.md index 2bcb6be3..cfa78f9f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,15 @@ +## 3.4.0 + +##### Added +- Added the ability to change the display flow of In-App Messages directly from Unity code via `AppboyBinding.SetInAppMessageDisplayAction()`. + - See the `BrazeUnityInAppMessageDisplayActionType` enum. +- Added the ability to open the default Content Cards UI via `DisplayContentCards()` on the binding. + - For Android, this requires the following dependencies: + ``` + implementation "androidx.swiperefreshlayout:swiperefreshlayout:+" + implementation "androidx.recyclerview:recyclerview:+" + ``` + ## 3.3.0 ##### Breaking