20
20
FOUNDATION_EXPORT NSString *const BFAppLinkUserAgentKeyName;
21
21
FOUNDATION_EXPORT NSString *const BFAppLinkExtrasKeyName;
22
22
FOUNDATION_EXPORT NSString *const BFAppLinkVersionKeyName;
23
+ FOUNDATION_EXPORT NSString *const BFAppLinkRefererAppLink;
24
+ FOUNDATION_EXPORT NSString *const BFAppLinkRefererAppName;
25
+ FOUNDATION_EXPORT NSString *const BFAppLinkRefererUrl;
23
26
24
27
static id <BFAppLinkResolving> defaultResolver;
25
28
@@ -43,6 +46,10 @@ + (instancetype)navigationWithAppLink:(BFAppLink *)appLink
43
46
return navigation;
44
47
}
45
48
49
+ + (NSDictionary *)callbackAppLinkDataForAppWithName : (NSString *)appName url : (NSString *)url {
50
+ return @{BFAppLinkRefererAppLink: @{BFAppLinkRefererAppName: appName, BFAppLinkRefererUrl: url}};
51
+ }
52
+
46
53
- (NSString *)stringByEscapingQueryString : (NSString *)string {
47
54
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_7_0 || __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_9
48
55
return [string stringByAddingPercentEncodingWithAllowedCharacters: [NSCharacterSet URLQueryAllowedCharacterSet ]];
@@ -229,6 +236,40 @@ + (BFAppLinkNavigationType)navigateToAppLink:(BFAppLink *)link error:(NSError **
229
236
appLinkData: nil ] navigate: error];
230
237
}
231
238
239
+ + (BFAppLinkNavigationType)navigationTypeForLink : (BFAppLink *)link {
240
+ return [[self navigationWithAppLink: link extras: nil appLinkData: nil ] navigationType ];
241
+ }
242
+
243
+ - (BFAppLinkNavigationType)navigationType {
244
+ BFAppLinkTarget *eligibleTarget = nil ;
245
+ for (BFAppLinkTarget *target in self.appLink .targets ) {
246
+ if ([[UIApplication sharedApplication ] canOpenURL: target.URL]) {
247
+ eligibleTarget = target;
248
+ break ;
249
+ }
250
+ }
251
+
252
+ if (eligibleTarget != nil ) {
253
+ NSURL *appLinkURL = [self appLinkURLWithTargetURL: eligibleTarget.URL error: nil ];
254
+ if (appLinkURL != nil ) {
255
+ return BFAppLinkNavigationTypeApp;
256
+ } else {
257
+ return BFAppLinkNavigationTypeFailure;
258
+ }
259
+ }
260
+
261
+ if (self.appLink .webURL != nil ) {
262
+ NSURL *appLinkURL = [self appLinkURLWithTargetURL: eligibleTarget.URL error: nil ];
263
+ if (appLinkURL != nil ) {
264
+ return BFAppLinkNavigationTypeBrowser;
265
+ } else {
266
+ return BFAppLinkNavigationTypeFailure;
267
+ }
268
+ }
269
+
270
+ return BFAppLinkNavigationTypeFailure;
271
+ }
272
+
232
273
+ (id <BFAppLinkResolving>)defaultResolver {
233
274
if (defaultResolver) {
234
275
return defaultResolver;
0 commit comments