Skip to content

Commit b34fe28

Browse files
Merge pull request #952 from microsoft/release/update-sdk-demoapp
Update DemoApp for 4.4.3 SDK release
2 parents 45bb41b + 9b4dc64 commit b34fe28

File tree

8 files changed

+88
-21
lines changed

8 files changed

+88
-21
lines changed

DemoApp/android/app/src/main/java/com/demoapp/DemoAppNativeModule.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@
99
import android.os.Looper;
1010
import android.util.Log;
1111

12+
import com.facebook.react.bridge.Promise;
1213
import com.facebook.react.bridge.BaseJavaModule;
1314
import com.facebook.react.bridge.ReactMethod;
1415
import com.microsoft.appcenter.crashes.model.TestCrashException;
1516
import com.microsoft.appcenter.reactnative.shared.AppCenterReactNativeShared;
17+
import com.microsoft.appcenter.analytics.Analytics;
1618

1719
import java.util.concurrent.atomic.AtomicInteger;
1820

@@ -34,6 +36,8 @@ public class DemoAppNativeModule extends BaseJavaModule {
3436

3537
private native void nativeAllocateLargeBuffer();
3638

39+
private static final String MANUAL_SESSION_TRACKER_ENABLED_KEY = "manual_session_tracker_enabled";
40+
3741
DemoAppNativeModule(Context context) {
3842
mSharedPreferences = context.getSharedPreferences(getName(), Context.MODE_PRIVATE);
3943
}
@@ -46,12 +50,32 @@ static void initSecrets(Context context) {
4650
AppCenterReactNativeShared.setStartAutomatically(startAutomaticallyOverride);
4751
}
4852

53+
static void initManualSessionTrackerState(Context context) {
54+
SharedPreferences sharedPreferences = context.getSharedPreferences(DEMO_APP_NATIVE, Context.MODE_PRIVATE);
55+
boolean isManualSessionTrackerEnabled = sharedPreferences.getBoolean(MANUAL_SESSION_TRACKER_ENABLED_KEY, false);
56+
if (isManualSessionTrackerEnabled) {
57+
Analytics.enableManualSessionTracker();
58+
}
59+
}
60+
4961
@Override
5062
@Nonnull
5163
public String getName() {
5264
return DEMO_APP_NATIVE;
5365
}
5466

67+
@ReactMethod
68+
public void saveManualSessionTrackerState(boolean state) {
69+
mSharedPreferences.edit()
70+
.putBoolean(MANUAL_SESSION_TRACKER_ENABLED_KEY, state)
71+
.apply();
72+
}
73+
74+
@ReactMethod
75+
public void getManualSessionTrackerState(Promise promise) {
76+
promise.resolve(mSharedPreferences.getBoolean(MANUAL_SESSION_TRACKER_ENABLED_KEY, false) ? 1 : 0);
77+
}
78+
5579
@SuppressWarnings("unused")
5680
@ReactMethod
5781
public void configureStartup(String secretString, boolean startAutomatically) {

DemoApp/android/app/src/main/java/com/demoapp/MainApplication.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ public ReactNativeHost getReactNativeHost() {
5757
public void onCreate() {
5858
super.onCreate();
5959
AppCenter.setLogLevel(Log.VERBOSE);
60+
DemoAppNativeModule.initManualSessionTrackerState(this);
6061
DemoAppNativeModule.initSecrets(this);
6162
SoLoader.init(this, /* native exopackage */ false);
6263
}

DemoApp/app/screens/AnalyticsScreen.js

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// Licensed under the MIT License.
33

44
import React, { Component } from 'react';
5-
import { Image, View, Text, Switch, SectionList, TouchableOpacity } from 'react-native';
5+
import { Image, View, Text, Switch, SectionList, NativeModules, TouchableOpacity } from 'react-native';
66
import Toast from 'react-native-simple-toast';
77

88
import Analytics from 'appcenter-analytics';
@@ -25,10 +25,15 @@ export default class AnalyticsScreen extends Component {
2525
}
2626

2727
state = {
28-
analyticsEnabled: false
28+
analyticsEnabled: false,
29+
isManualSessionEnabled: false
2930
}
3031

3132
async componentDidMount() {
33+
NativeModules.DemoAppNative.getManualSessionTrackerState().then((isEnabled) => {
34+
const isManualSessionEnabled = isEnabled === 1;
35+
this.setState({ isManualSessionEnabled });
36+
});
3237
await this.refreshToggle();
3338

3439
this.props.navigation.setParams({
@@ -76,6 +81,15 @@ export default class AnalyticsScreen extends Component {
7681
this.setState({ analyticsEnabled });
7782
}
7883
},
84+
{
85+
title: 'Manual Session Tracking Enabled',
86+
value: 'isManualSessionEnabled',
87+
toggle: async () => {
88+
const isManualSessionEnabled = !this.state.isManualSessionEnabled;
89+
await NativeModules.DemoAppNative.saveManualSessionTrackerState(isManualSessionEnabled);
90+
this.setState({ isManualSessionEnabled });
91+
}
92+
},
7993
],
8094
renderItem: switchRenderItem
8195
},
@@ -106,6 +120,12 @@ export default class AnalyticsScreen extends Component {
106120
showEventToast(eventName);
107121
}
108122
},
123+
{
124+
title: 'Start session',
125+
action: () => {
126+
Analytics.startSession();
127+
}
128+
},
109129
],
110130
renderItem: actionRenderItem
111131
},

DemoApp/ios/DemoApp/AppDelegate.m

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#import <React/RCTBundleURLProvider.h>
2121
#import <React/RCTRootView.h>
2222
@import AppCenter;
23+
@import AppCenterAnalytics;
2324

2425
@implementation AppDelegate
2526

@@ -36,6 +37,11 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(
3637
[AppCenterReactNativeShared setStartAutomatically:[startAutomatically boolValue]];
3738
}
3839

40+
BOOL sessionAuto = [[NSUserDefaults standardUserDefaults] boolForKey:@"ManualSessionTrackerEnabled"];
41+
if (sessionAuto) {
42+
[MSACAnalytics enableManualSessionTracker];
43+
}
44+
3945
[AppCenterReactNative register]; // Initialize AppCenter
4046
[AppCenterReactNativeAnalytics registerWithInitiallyEnabled:true]; // Initialize AppCenter Analytics
4147
[AppCenterReactNativeCrashes register]; // Initialize AppCenter Crashes

DemoApp/ios/DemoApp/DemoAppNative.m

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ @implementation DemoAppNative
3232
static int const blockSize = 256 * 1024 * 1024;
3333
static NSString* const kAppCenterSecretKey = @"AppSecret";
3434
static NSString* const kAppCenterStartAutomaticallyKey = @"StartAutomatically";
35+
static NSString* const kManualSessionTrackerEnabled = @"ManualSessionTrackerEnabled";
3536

3637
- (instancetype) init {
3738
self = [super init];
@@ -55,6 +56,21 @@ - (instancetype) init {
5556
[userDefaults setBool:startAutomatically forKey:kAppCenterStartAutomaticallyKey];
5657
}
5758

59+
RCT_EXPORT_METHOD(saveManualSessionTrackerState:(BOOL)state)
60+
{
61+
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
62+
[userDefaults setBool:state forKey:kManualSessionTrackerEnabled];
63+
}
64+
65+
RCT_EXPORT_METHOD(getManualSessionTrackerState:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
66+
{
67+
if ([[NSUserDefaults standardUserDefaults] boolForKey:kManualSessionTrackerEnabled]){
68+
resolve(@(1));
69+
} else {
70+
resolve(@(0));
71+
}
72+
}
73+
5874
RCT_EXPORT_METHOD(generateTestCrash)
5975
{
6076
int* p = 0;

DemoApp/ios/Podfile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ target 'DemoApp' do
66
# use_frameworks!
77

88
# Pods for DemoApp
9-
pod 'AppCenter/Crashes', '~> 4.3.0'
10-
pod 'AppCenter/Analytics', '~> 4.3.0'
11-
pod 'AppCenterReactNativeShared', '~> 4.3.0'
9+
pod 'AppCenter/Crashes', '~> 4.4.1'
10+
pod 'AppCenter/Analytics', '~> 4.4.1'
11+
pod 'AppCenterReactNativeShared', '~> 4.4.1'
1212

1313
platform :ios, '9.0'
1414

DemoApp/ios/Podfile.lock

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
11
PODS:
2-
- AppCenter/Analytics (4.3.0):
2+
- AppCenter/Analytics (4.4.1):
33
- AppCenter/Core
4-
- AppCenter/Core (4.3.0)
5-
- AppCenter/Crashes (4.3.0):
4+
- AppCenter/Core (4.4.1)
5+
- AppCenter/Crashes (4.4.1):
66
- AppCenter/Core
7-
- AppCenterReactNativeShared (4.3.0):
8-
- AppCenter/Core (= 4.3.0)
7+
- AppCenterReactNativeShared (4.4.3):
8+
- AppCenter/Core (= 4.4.1)
99

1010
DEPENDENCIES:
11-
- AppCenter/Analytics (~> 4.3.0)
12-
- AppCenter/Crashes (~> 4.3.0)
13-
- AppCenterReactNativeShared (~> 4.3.0)
11+
- AppCenter/Analytics (~> 4.4.1)
12+
- AppCenter/Crashes (~> 4.4.1)
13+
- AppCenterReactNativeShared (~> 4.4.1)
1414

1515
SPEC REPOS:
1616
https://msmobilecenter.visualstudio.com/SDK/_git/AppCenterSDK-Specs-Private:
1717
- AppCenter
1818
- AppCenterReactNativeShared
1919

2020
SPEC CHECKSUMS:
21-
AppCenter: 1fde01d939ee7c09bc2ff982476d1a891719065c
22-
AppCenterReactNativeShared: b150ce9f33c10395798b2a60aed2e114acd87557
21+
AppCenter: f972fab2a9b76ab4774a96a8535e5a4dec2e525d
22+
AppCenterReactNativeShared: 63c1d3d91630c2d0f7d753c36bfcd7aaf681a960
2323

24-
PODFILE CHECKSUM: 68158a0223388bbed08e7c1ba598db31fccc7cea
24+
PODFILE CHECKSUM: 13e9d546ca535513259acce190bfc0697d10ba42
2525

2626
COCOAPODS: 1.11.0

DemoApp/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
},
1010
"dependencies": {
1111
"@react-native-community/async-storage": "1.6.2",
12-
"appcenter": "^4.3.0",
13-
"appcenter-analytics": "^4.3.0",
14-
"appcenter-crashes": "^4.3.0",
12+
"appcenter": "^4.4.3",
13+
"appcenter-analytics": "^4.4.3",
14+
"appcenter-crashes": "^4.4.3",
1515
"metro": "0.54.1",
1616
"react": "16.8.3",
1717
"react-native": "0.59.9",
@@ -25,7 +25,7 @@
2525
"stacktrace-parser": "0.1.7"
2626
},
2727
"devDependencies": {
28-
"@babel/core": "7.6.4",
28+
"@babel/core": "^7.16.7",
2929
"@babel/plugin-external-helpers": "7.2.0",
3030
"@babel/runtime": "7.6.3",
3131
"@react-native-community/eslint-config": "0.0.3",
@@ -37,7 +37,7 @@
3737
"eslint-plugin-jsx-a11y": "6.2.3",
3838
"eslint-plugin-react": "7.16.0",
3939
"jest": "24.9.0",
40-
"metro-react-native-babel-preset": "0.54.1",
40+
"metro-react-native-babel-preset": "^0.66.2",
4141
"react-test-renderer": "16.8.3"
4242
},
4343
"jest": {

0 commit comments

Comments
 (0)