Skip to content

Commit e9892d7

Browse files
committed
Support mock updates on iOS (for testing)
1 parent c15e1e3 commit e9892d7

File tree

2 files changed

+58
-0
lines changed

2 files changed

+58
-0
lines changed

ios/RNActivityRecognition.m

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,15 @@ - (NSString *)generateAct: (CMMotionActivity *) activity {
4646
return @"UNKNOWN";
4747
}
4848

49+
- (NSDictionary *)constantsToExport
50+
{
51+
// Export a few common activity types to allow easier mocking.
52+
return @{
53+
@"IOS_STATIONARY": @"STATIONARY",
54+
@"IOS_WALKING": @"WALKING",
55+
@"IOS_AUTOMOTIVE": @"AUTOMOTIVE",
56+
};
57+
}
4958

5059
- (void)activityManager
5160
{
@@ -69,6 +78,19 @@ - (void)activityManager
6978
}
7079
}
7180

81+
- (void)mockActivityManager:(NSTimer *)timer
82+
{
83+
// Receive the data.
84+
NSString* mockActivity = timer.userInfo;
85+
86+
if (mockActivity == nil) mockActivity = @"UNKNOWN";
87+
88+
dispatch_async(dispatch_get_main_queue(), ^{
89+
_activityEvent = @{ mockActivity: @100 };
90+
[self sendEventWithName:@"ActivityDetection" body: _activityEvent];
91+
});
92+
}
93+
7294
RCT_EXPORT_METHOD(startActivity:(float)time callback:(RCTResponseSenderBlock)callback)
7395
{
7496
NSString* errorMsg = checkActivityConfig(callback);
@@ -87,6 +109,24 @@ - (void)activityManager
87109
callback(@[[NSNull null]]);
88110
}
89111

112+
RCT_EXPORT_METHOD(startMockedActivity:(float)time mockActivity:(NSString*)mockActivity callback:(RCTResponseSenderBlock)callback)
113+
{
114+
_timeout = time/1000;
115+
RCTLogInfo(@"Starting Mock Activity Detection");
116+
_timer = [NSTimer scheduledTimerWithTimeInterval:_timeout
117+
target:self selector:@selector(mockActivityManager:) userInfo:mockActivity repeats:YES];
118+
119+
callback(@[[NSNull null]]);
120+
}
121+
122+
RCT_EXPORT_METHOD(stopMockedActivity:(RCTResponseSenderBlock)callback)
123+
{
124+
RCTLogInfo(@"Stopping Mock Activity Detection");
125+
[_timer invalidate];
126+
127+
callback(@[[NSNull null]]);
128+
}
129+
90130
RCT_EXPORT_METHOD(stopActivity:(RCTResponseSenderBlock)callback)
91131
{
92132
RCTLogInfo(@"Stopping Activity Detection");

src/ActivityRecognition.ios.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ const emitter = new NativeEventEmitter(RNActivityRecognition);
66
var subscription = null;
77

88
var ActivityRecognition = {
9+
'IOS_STATIONARY': RNActivityRecognition.IOS_STATIONARY,
10+
'IOS_WALKING': RNActivityRecognition.IOS_WALKING,
11+
'IOS_AUTOMOTIVE': RNActivityRecognition.IOS_AUTOMOTIVE,
12+
913
subscribe: function(success: Function) {
1014
subscription = emitter.addListener(
1115
"ActivityDetection",
@@ -21,11 +25,25 @@ var ActivityRecognition = {
2125
);
2226
return () => subscription.remove();
2327
},
28+
2429
start: function(time: number) {
2530
return new Promise((resolve, reject) => {
2631
RNActivityRecognition.startActivity(time, logAndReject.bind(null, resolve, reject))
2732
})
2833
},
34+
35+
startMocked: function(time: number, mockActivity: string) {
36+
return new Promise((resolve, reject) => {
37+
RNActivityRecognition.startMockedActivity(time, mockActivity, logAndReject.bind(null, resolve, reject))
38+
})
39+
},
40+
41+
stopMocked: function() {
42+
return new Promise((resolve, reject) => {
43+
RNActivityRecognition.stopMockedActivity(logAndReject.bind(null, resolve, reject))
44+
})
45+
},
46+
2947
stop: function() {
3048
return new Promise((resolve, reject) => {
3149
RNActivityRecognition.stopActivity(logAndReject.bind(null, resolve, reject))

0 commit comments

Comments
 (0)