Skip to content

Commit e2a9ed0

Browse files
Merge pull request #685 from adkenyon/handleATTAuthorizationStatus
Expose iOS method handleATTAuthorizationStatus to the React Native JS runtime
2 parents 200d325 + 39e9ee9 commit e2a9ed0

File tree

3 files changed

+42
-1
lines changed

3 files changed

+42
-1
lines changed

ios/RNBranch.m

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -665,4 +665,11 @@ - (BranchUniversalObject *)findUniversalObjectWithIdent:(NSString *)ident reject
665665
[self.universalObjectMap removeObjectForKey:identifier];
666666
}
667667

668+
#pragma mark handleATTAuthorizationStatus
669+
RCT_EXPORT_METHOD(
670+
handleATTAuthorizationStatus:(NSUInteger)authorizationStatus
671+
) {
672+
[self.class.branch handleATTAuthorizationStatus:authorizationStatus];
673+
}
674+
668675
@end

src/index.d.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@ type BranchEventParams = Pick<
4646
| "customData"
4747
>;
4848

49+
type ATTAuthorizationStatus = 'authorized'
50+
| 'denied'
51+
| 'undetermined'
52+
| 'restricted'
53+
4954
export class BranchEvent {
5055
logEvent: () => Promise<null>;
5156
constructor(
@@ -305,6 +310,9 @@ interface Branch {
305310
identifier: string,
306311
options: BranchUniversalObjectOptions
307312
) => BranchUniversalObject;
313+
handleATTAuthorizationStatus: (
314+
ATTAuthorizationStatus:ATTAuthorizationStatus
315+
) => void
308316
}
309317
declare const branch: Branch;
310318
export default branch;

src/index.js

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,36 @@ class Branch {
8484
ios: () => RNBranch.openURL(url)
8585
})()
8686
}
87+
handleATTAuthorizationStatus = (ATTAuthorizationStatus) => {
88+
if (Platform.OS != 'ios') return;
89+
let normalizedAttAuthorizationStatus = -1
90+
91+
switch(ATTAuthorizationStatus) {
92+
case 'authorized':
93+
normalizedAttAuthorizationStatus = 3;
94+
break;
95+
case 'denied':
96+
normalizedAttAuthorizationStatus = 2;
97+
break;
98+
case 'undetermined':
99+
normalizedAttAuthorizationStatus = 0;
100+
break;
101+
case 'restricted':
102+
normalizedAttAuthorizationStatus = 1;
103+
break;
104+
}
105+
106+
if (normalizedAttAuthorizationStatus < 0) {
107+
console.info('[Branch] handleATTAuthorizationStatus received an unrecognized value. Value must be one of; authorized, denied, undetermined, or restricted')
108+
return;
109+
}
110+
111+
RNBranch.handleATTAuthorizationStatus(normalizedAttAuthorizationStatus)
112+
}
87113

88114
/*** BranchUniversalObject ***/
89115
createBranchUniversalObject = createBranchUniversalObject
90116
}
91117

92118
export { Branch, BranchEvent, BranchSubscriber }
93-
export default new Branch()
119+
export default new Branch()

0 commit comments

Comments
 (0)