Skip to content

Commit

Permalink
Release version 9.1.0
Browse files Browse the repository at this point in the history
  • Loading branch information
jerielng committed Mar 27, 2024
1 parent 948d822 commit 864e5ba
Show file tree
Hide file tree
Showing 11 changed files with 403 additions and 34 deletions.
16 changes: 16 additions & 0 deletions BrazeProject/BrazeProject.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ export const BrazeProject = (): ReactElement => {
const [featureFlagPropertyType, setFeatureFlagPropertyType] =
useState<string>('bool');
const [featureFlagPropertyKey, setFeatureFlagPropertyKey] = useState('');
const [pushToken, setPushToken] = useState('');

// If key is persisted, use the value. If no key is present, default to true.
const [iOSPushAutoEnabled, setiOSPushAutoEnabled] = useState<boolean>(() => {
Expand Down Expand Up @@ -755,6 +756,10 @@ export const BrazeProject = (): ReactElement => {
);
};

const setPushTokenPress = async () => {
Braze.registerPushToken(pushToken);
}

return (
<ScrollView
contentInsetAdjustmentBehavior="automatic"
Expand Down Expand Up @@ -976,6 +981,17 @@ export const BrazeProject = (): ReactElement => {
<TouchableHighlight onPress={requestPushPermission}>
<Text>Request Push Permission</Text>
</TouchableHighlight>
<TextInput
style={styles.textInput}
placeholder='push token'
autoCorrect={false}
autoCapitalize="none"
onChangeText={setPushToken}
value={pushToken}
/>
<TouchableHighlight onPress={setPushTokenPress}>
<Text>Set Push Token</Text>
</TouchableHighlight>
<TouchableHighlight onPress={setAttributionData}>
<Text>Set Attribution Data</Text>
</TouchableHighlight>
Expand Down
28 changes: 14 additions & 14 deletions BrazeProject/ios/Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
PODS:
- boost (1.83.0)
- braze-react-native-sdk (9.0.0):
- BrazeKit (~> 8.1.0)
- BrazeLocation (~> 8.1.0)
- BrazeUI (~> 8.1.0)
- braze-react-native-sdk (9.1.0):
- BrazeKit (~> 8.2.1)
- BrazeLocation (~> 8.2.1)
- BrazeUI (~> 8.2.1)
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
Expand All @@ -22,13 +22,13 @@ PODS:
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- Yoga
- BrazeKit (8.1.0)
- BrazeLocation (8.1.0):
- BrazeKit (= 8.1.0)
- BrazeKit (8.2.1)
- BrazeLocation (8.2.1):
- BrazeKit (= 8.2.1)
- BrazeNotificationService (8.1.0)
- BrazePushStory (8.1.0)
- BrazeUI (8.1.0):
- BrazeKit (= 8.1.0)
- BrazeUI (8.2.1):
- BrazeKit (= 8.2.1)
- CocoaAsyncSocket (7.6.5)
- DoubleConversion (1.1.6)
- FBLazyVector (0.73.1)
Expand Down Expand Up @@ -1395,12 +1395,12 @@ EXTERNAL SOURCES:

SPEC CHECKSUMS:
boost: 26fad476bfa736552bbfa698a06cc530475c1505
braze-react-native-sdk: ad3deb0b6a8f7cace5bf8eb474b2ebc153dfaec8
BrazeKit: 880c54aba0b30e276e5a3d5c878f72e3323a940c
BrazeLocation: a97d8559513c3dbeb4af635b9370d2f6f3c030de
braze-react-native-sdk: 2f996f07959f2bb97604c1a2ca3b5b876a6f2e2f
BrazeKit: 45370af59da16595839b6229b82f974a6bdb3909
BrazeLocation: aae9d0aac79d76f9cbe253de2cec1055b3119567
BrazeNotificationService: a0dc917d52102b9387b24e4135cb3bf0305316c7
BrazePushStory: b8a1ef9e28618cbd58658a93d603175a2cf5dbfd
BrazeUI: 5b0e82484cf2a86e28fc9464a142f3b2e63ebc7f
BrazeUI: 49647ff0b180dcb7df3bc23206c02b2cb1629ec9
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
DoubleConversion: fea03f2699887d960129cc54bba7e52542b6f953
FBLazyVector: 2296bacb2fa157a43991048b0a9d71c1c8b65083
Expand Down Expand Up @@ -1467,4 +1467,4 @@ SPEC CHECKSUMS:

PODFILE CHECKSUM: d9b32babc56dce83b08e09f4d22425f720e2c26d

COCOAPODS: 1.14.3
COCOAPODS: 1.15.2
12 changes: 11 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,21 @@
## 9.1.0

##### Added
- Adds the `BrazeInAppMessage.isTestSend` property, which indicates whether an in-app message was triggered as part of a test send.
- Updates the native iOS version bindings [from Braze Swift SDK 8.1.0 to 8.2.1](https://github.com/braze-inc/braze-swift-sdk/compare/8.1.0...8.2.1#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed).
- Updates the native Android version bindings [from Braze Android SDK 30.1.1 to 30.3.0](https://github.com/braze-inc/braze-android-sdk/compare/v30.1.1...v30.3.0#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed).

##### Fixed
- Fixes the iOS implementation of `Braze.registerPushToken()` to correctly pass the device token to the native SDK.

## 9.0.0

##### Breaking
- Bumps React Native minimum requirement version to [0.71.0](https://reactnative.dev/blog/2023/01/12/version-071).
- For further details about levels of support for each React Native release, refer to [Releases Support Policy](https://github.com/reactwg/react-native-releases#releases-support-policy) in the React Working Group.
- Bumps the minimum required iOS version to 12.0.
- Updates the native iOS version bindings [from Braze Swift SDK 7.5.0 to 8.1.0](https://github.com/braze-inc/braze-swift-sdk/compare/7.5.0...8.1.0#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed).
- Updates the native Android version bindings [from Braze Android SDK 29.0.1 to 30.1.0](https://github.com/braze-inc/braze-android-sdk/compare/v29.0.1...v30.1.0#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed).
- Updates the native Android version bindings [from Braze Android SDK 29.0.1 to 30.1.1](https://github.com/braze-inc/braze-android-sdk/compare/v29.0.1...v30.1.1#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4ed).

## 8.4.0

Expand Down
8 changes: 6 additions & 2 deletions __tests__/index.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { Platform } from 'react-native';
console.log = jest.fn();
const testCallback = jest.fn();

const testInAppMessageJson = `{\"message\":\"body body\",\"type\":\"MODAL\",\"text_align_message\":\"CENTER\",\"click_action\":\"NONE\",\"message_close\":\"SWIPE\",\"extras\":{\"test\":\"123\",\"foo\":\"bar\"},\"header\":\"hello\",\"text_align_header\":\"CENTER\",\"image_url\":\"https:\\/\\/github.com\\/braze-inc\\/braze-react-native-sdk\\/blob\\/master\\/.github\\/assets\\/logo-dark.png?raw=true\",\"image_style\":\"TOP\",\"btns\":[{\"id\":0,\"text\":\"button 1\",\"click_action\":\"URI\",\"uri\":\"https:\\/\\/www.google.com\",\"use_webview\":true,\"bg_color\":4294967295,\"text_color\":4279990479,\"border_color\":4279990479},{\"id\":1,\"text\":\"button 2\",\"click_action\":\"NONE\",\"bg_color\":4279990479,\"text_color\":4294967295,\"border_color\":4279990479}],\"close_btn_color\":4291085508,\"bg_color\":4294243575,\"frame_color\":3207803699,\"text_color\":4280624421,\"header_text_color\":4280624421,\"trigger_id\":\"NWJhNTMxOThiZjVjZWE0NDZiMTUzYjZiXyRfbXY9NWJhNTMxOThiZjVjZWE0NDZiMTUzYjc1JnBpPWNtcA==\"}`;
const testInAppMessageJson = `{\"message\":\"body body\",\"type\":\"MODAL\",\"text_align_message\":\"CENTER\",\"click_action\":\"NONE\",\"message_close\":\"SWIPE\",\"extras\":{\"test\":\"123\",\"foo\":\"bar\"},\"header\":\"hello\",\"text_align_header\":\"CENTER\",\"image_url\":\"https:\\/\\/github.com\\/braze-inc\\/braze-react-native-sdk\\/blob\\/master\\/.github\\/assets\\/logo-dark.png?raw=true\",\"image_style\":\"TOP\",\"btns\":[{\"id\":0,\"text\":\"button 1\",\"click_action\":\"URI\",\"uri\":\"https:\\/\\/www.google.com\",\"use_webview\":true,\"bg_color\":4294967295,\"text_color\":4279990479,\"border_color\":4279990479},{\"id\":1,\"text\":\"button 2\",\"click_action\":\"NONE\",\"bg_color\":4279990479,\"text_color\":4294967295,\"border_color\":4279990479}],\"close_btn_color\":4291085508,\"bg_color\":4294243575,\"frame_color\":3207803699,\"text_color\":4280624421,\"header_text_color\":4280624421,\"trigger_id\":\"NWJhNTMxOThiZjVjZWE0NDZiMTUzYjZiXyRfbXY9NWJhNTMxOThiZjVjZWE0NDZiMTUzYjc1JnBpPWNtcA==\", \"is_test_send\":false}`;

afterEach(() => {
jest.clearAllMocks();
Expand Down Expand Up @@ -525,9 +525,10 @@ it('instantiates a BrazeInAppMessage object', () => {
const testButton1 = '{\"id\":1,\"text\":\"button 2\",\"click_action\":\"NONE\",\"bg_color\":4279990479,\"text_color\":4294967295,\"border_color\":4279990479}';
const testButtonString = `[${testButton0}, ${testButton1}]`;
const testButtons = [];
const testIsTestSend = true;
testButtons.push(new Braze.BrazeButton(JSON.parse(testButton0)));
testButtons.push(new Braze.BrazeButton(JSON.parse(testButton1)));
const testJson = `{\"message\":\"${testMessageBody}\",\"type\":\"${testMessageType}\",\"text_align_message\":\"CENTER\",\"click_action\":\"${testClickAction}\",\"message_close\":\"SWIPE\",\"extras\":${testExtras},\"header\":\"${testHeader}\",\"text_align_header\":\"CENTER\",\"image_url\":\"${testImageUrl}\",\"image_style\":\"TOP\",\"btns\":${testButtonString},\"close_btn_color\":4291085508,\"bg_color\":4294243575,\"frame_color\":3207803699,\"text_color\":4280624421,\"header_text_color\":4280624421,\"trigger_id\":\"NWJhNTMxOThiZjVjZWE0NDZiMTUzYjZiXyRfbXY9NWJhNTMxOThiZjVjZWE0NDZiMTUzYjc1JnBpPWNtcA==\",\"uri\":\"${testUri}\",\"zipped_assets_url\":\"${testZippedAssetsUrl}\",\"duration\":${testDuration},\"message_close\":\"${testDismissType}\",\"use_webview\":${testUseWebView}}`
const testJson = `{\"message\":\"${testMessageBody}\",\"type\":\"${testMessageType}\",\"text_align_message\":\"CENTER\",\"click_action\":\"${testClickAction}\",\"message_close\":\"SWIPE\",\"extras\":${testExtras},\"header\":\"${testHeader}\",\"text_align_header\":\"CENTER\",\"image_url\":\"${testImageUrl}\",\"image_style\":\"TOP\",\"btns\":${testButtonString},\"close_btn_color\":4291085508,\"bg_color\":4294243575,\"frame_color\":3207803699,\"text_color\":4280624421,\"header_text_color\":4280624421,\"trigger_id\":\"NWJhNTMxOThiZjVjZWE0NDZiMTUzYjZiXyRfbXY9NWJhNTMxOThiZjVjZWE0NDZiMTUzYjc1JnBpPWNtcA==\",\"uri\":\"${testUri}\",\"zipped_assets_url\":\"${testZippedAssetsUrl}\",\"duration\":${testDuration},\"message_close\":\"${testDismissType}\",\"use_webview\":${testUseWebView}, \"is_test_send\":${testIsTestSend}}`
const inAppMessage = new Braze.BrazeInAppMessage(testJson);
expect(inAppMessage.message).toBe(testMessageBody);
expect(inAppMessage.messageType).toBe(testMessageType.toLowerCase());
Expand All @@ -542,6 +543,7 @@ it('instantiates a BrazeInAppMessage object', () => {
expect(inAppMessage.header).toBe(testHeader);
expect(inAppMessage.inAppMessageJsonString).toBe(testJson);
expect(inAppMessage.buttons).toEqual(testButtons);
expect(inAppMessage.isTestSend).toEqual(testIsTestSend);
});

it('instantiates a BrazeInAppMessage object with the desired defaults', () => {
Expand All @@ -557,6 +559,7 @@ it('instantiates a BrazeInAppMessage object with the desired defaults', () => {
const defaultDismissType = 'AUTO_DISMISS';
const defaultHeader = '';
const defaultButtons = [];
const defaultIsTestSend = false;
const testJson = `{}`;
const inAppMessage = new Braze.BrazeInAppMessage(testJson);
expect(inAppMessage.message).toBe(defaultMessageBody);
Expand All @@ -572,6 +575,7 @@ it('instantiates a BrazeInAppMessage object with the desired defaults', () => {
expect(inAppMessage.header).toBe(defaultHeader);
expect(inAppMessage.inAppMessageJsonString).toBe(testJson);
expect(inAppMessage.buttons).toEqual(defaultButtons);
expect(inAppMessage.isTestSend).toEqual(defaultIsTestSend);
});

it('returns the original JSON when calling BrazeInAppMessage.toString()', () => {
Expand Down
2 changes: 1 addition & 1 deletion android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,6 @@ android {
}

dependencies {
api 'com.braze:android-sdk-ui:30.1.1'
api 'com.braze:android-sdk-ui:30.3.0'
api 'com.facebook.react:react-native:+'
}
6 changes: 3 additions & 3 deletions braze-react-native-sdk.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ Pod::Spec.new do |s|

install_modules_dependencies(s)

s.dependency 'BrazeKit', '~> 8.1.0'
s.dependency 'BrazeLocation', '~> 8.1.0'
s.dependency 'BrazeUI', '~> 8.1.0'
s.dependency 'BrazeKit', '~> 8.2.1'
s.dependency 'BrazeLocation', '~> 8.2.1'
s.dependency 'BrazeUI', '~> 8.2.1'

# Swift/Objective-C compatibility
s.pod_target_xcconfig = {
Expand Down
23 changes: 13 additions & 10 deletions iOS/BrazeReactBridge/BrazeReactBridge.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@
objects = {

/* Begin PBXBuildFile section */
70F978472BADA57F002E06BE /* BrazeUIHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 70F978462BADA57F002E06BE /* BrazeUIHandler.m */; };
D4DB659B1D8C973800EFA6B6 /* BrazeReactUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = D4DB659A1D8C973800EFA6B6 /* BrazeReactUtils.m */; };
E3D0A75E1C668BB90027828A /* BrazeReactBridge.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = E3D0A75D1C668BB90027828A /* BrazeReactBridge.h */; };
E3D0A7601C668BB90027828A /* BrazeReactBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = E3D0A75F1C668BB90027828A /* BrazeReactBridge.m */; };
E3D0A7601C668BB90027828A /* BrazeReactBridge.mm in Sources */ = {isa = PBXBuildFile; fileRef = E3D0A75F1C668BB90027828A /* BrazeReactBridge.mm */; };
/* End PBXBuildFile section */

/* Begin PBXCopyFilesBuildPhase section */
Expand All @@ -26,11 +27,13 @@
/* End PBXCopyFilesBuildPhase section */

/* Begin PBXFileReference section */
70F978452BADA57F002E06BE /* BrazeUIHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BrazeUIHandler.h; sourceTree = "<group>"; };
70F978462BADA57F002E06BE /* BrazeUIHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BrazeUIHandler.m; sourceTree = "<group>"; };
D4DB65991D8C973800EFA6B6 /* BrazeReactUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BrazeReactUtils.h; sourceTree = "<group>"; };
D4DB659A1D8C973800EFA6B6 /* BrazeReactUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BrazeReactUtils.m; sourceTree = "<group>"; };
E3D0A75A1C668BB90027828A /* libBrazeReactBridge.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libBrazeReactBridge.a; sourceTree = BUILT_PRODUCTS_DIR; };
E3D0A75D1C668BB90027828A /* BrazeReactBridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BrazeReactBridge.h; sourceTree = "<group>"; };
E3D0A75F1C668BB90027828A /* BrazeReactBridge.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BrazeReactBridge.m; sourceTree = "<group>"; };
E3D0A75F1C668BB90027828A /* BrazeReactBridge.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = BrazeReactBridge.mm; path = BrazeReactBridge/BrazeReactBridge.mm; sourceTree = SOURCE_ROOT; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
Expand Down Expand Up @@ -63,8 +66,10 @@
E3D0A75C1C668BB90027828A /* BrazeReactBridge */ = {
isa = PBXGroup;
children = (
70F978452BADA57F002E06BE /* BrazeUIHandler.h */,
70F978462BADA57F002E06BE /* BrazeUIHandler.m */,
E3D0A75D1C668BB90027828A /* BrazeReactBridge.h */,
E3D0A75F1C668BB90027828A /* BrazeReactBridge.m */,
E3D0A75F1C668BB90027828A /* BrazeReactBridge.mm */,
D4DB65991D8C973800EFA6B6 /* BrazeReactUtils.h */,
D4DB659A1D8C973800EFA6B6 /* BrazeReactUtils.m */,
);
Expand Down Expand Up @@ -110,6 +115,7 @@
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
English,
en,
);
mainGroup = E3D0A7511C668BB90027828A;
Expand All @@ -127,8 +133,9 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
70F978472BADA57F002E06BE /* BrazeUIHandler.m in Sources */,
D4DB659B1D8C973800EFA6B6 /* BrazeReactUtils.m in Sources */,
E3D0A7601C668BB90027828A /* BrazeReactBridge.m in Sources */,
E3D0A7601C668BB90027828A /* BrazeReactBridge.mm in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -224,9 +231,7 @@
"$(SRCROOT)/../../../react-native/React/**",
"$(SRCROOT)/../../../../ios/Pods/Headers/**",
);
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
);
LIBRARY_SEARCH_PATHS = "$(inherited)";
OTHER_LDFLAGS = "-ObjC";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
Expand All @@ -242,9 +247,7 @@
"$(SRCROOT)/../../../react-native/React/**",
"$(SRCROOT)/../../../../ios/Pods/Headers/**",
);
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
);
LIBRARY_SEARCH_PATHS = "$(inherited)";
OTHER_LDFLAGS = "-ObjC";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
Expand Down
11 changes: 10 additions & 1 deletion iOS/BrazeReactBridge/BrazeReactBridge/BrazeReactBridge.mm
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,16 @@ - (void)reportResultWithCallback:(RCTResponseSenderBlock)callback andError:(NSSt

RCT_EXPORT_METHOD(registerPushToken:(NSString *)token) {
RCTLogInfo(@"braze registerPushToken with token %@", token);
NSData* tokenData = [token dataUsingEncoding:NSUTF8StringEncoding];
// Convert the token (hex representation) to NSData
NSMutableData* tokenData = [NSMutableData data];
unsigned char wholeByte;
char byteChars[3] = {'\0','\0','\0'};
for (int i = 0; i < token.length / 2; i++) {
byteChars[0] = [token characterAtIndex:i * 2];
byteChars[1] = [token characterAtIndex:i * 2 + 1];
wholeByte = strtol(byteChars, NULL, 16);
[tokenData appendBytes:&wholeByte length:1];
}
[braze.notifications registerDeviceToken:tokenData];
}

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@braze/react-native-sdk",
"version": "9.0.0",
"version": "9.1.0",
"description": "Braze SDK for React Native.",
"main": "src/index.js",
"types": "src/index.d.ts",
Expand Down
Loading

0 comments on commit 864e5ba

Please sign in to comment.