lpw
2023-07-20 80f7cc0c18ce7e590a4c14cd1011a82b296770f5
commit | author | age
e0ec42 1 /*
L 2  * Copyright (c) Meta Platforms, Inc. and affiliates.
3  * All rights reserved.
4  *
5  * This source code is licensed under the license found in the
6  * LICENSE file in the root directory of this source tree.
7  */
8
9 #if !TARGET_OS_TV
10
11 #import <Foundation/Foundation.h>
12
13 NS_ASSUME_NONNULL_BEGIN
14
15 @protocol FBSDKAppLink;
16 @protocol FBSDKAppLinkCreating;
17
18 /**
19  Provides a set of utilities for working with NSURLs, such as parsing of query parameters
20  and handling for App Link requests.
21  */
22 NS_SWIFT_NAME(AppLinkURL)
23 @interface FBSDKURL : NSObject <FBSDKAppLinkURL>
24
25 - (instancetype)init NS_UNAVAILABLE;
26 + (instancetype)new NS_UNAVAILABLE;
27
28 /**
29  Creates a link target from a raw URL.
30  On success, this posts the FBSDKAppLinkParseEventName measurement event. If you are constructing the FBSDKURL within your application delegate's
31  application:openURL:sourceApplication:annotation:, you should instead use URLWithInboundURL:sourceApplication:
32  to support better FBSDKMeasurementEvent notifications
33  @param url The instance of `NSURL` to create FBSDKURL from.
34  */
35
36 // UNCRUSTIFY_FORMAT_OFF
37 + (instancetype)URLWithURL:(NSURL *)url
38 NS_SWIFT_NAME(init(url:));
39 // UNCRUSTIFY_FORMAT_ON
40
41 /**
42  Creates a link target from a raw URL received from an external application. This is typically called from the app delegate's
43  application:openURL:sourceApplication:annotation: and will post the FBSDKAppLinkNavigateInEventName measurement event.
44  @param url The instance of `NSURL` to create FBSDKURL from.
45  @param sourceApplication the bundle ID of the app that is requesting your app to open the URL. The same sourceApplication in application:openURL:sourceApplication:annotation:
46  */
47
48 // UNCRUSTIFY_FORMAT_OFF
49 + (instancetype)URLWithInboundURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication
50 NS_SWIFT_NAME(init(inboundURL:sourceApplication:));
51 // UNCRUSTIFY_FORMAT_ON
52
53 /**
54  Gets the target URL.  If the link is an App Link, this is the target of the App Link.
55  Otherwise, it is the url that created the target.
56  */
57 @property (nonatomic, readonly, strong) NSURL *targetURL;
58
59 /// Gets the query parameters for the target, parsed into an NSDictionary.
60 @property (nonatomic, readonly, strong) NSDictionary<NSString *, id> *targetQueryParameters;
61
62 /**
63  If this link target is an App Link, this is the data found in al_applink_data.
64  Otherwise, it is nil.
65  */
66 @property (nullable, nonatomic, readonly, strong) NSDictionary<NSString *, id> *appLinkData;
67
68 /// If this link target is an App Link, this is the data found in extras.
69 @property (nullable, nonatomic, readonly, strong) NSDictionary<NSString *, id> *appLinkExtras;
70
71 /// The App Link indicating how to navigate back to the referer app, if any.
72 @property (nullable, nonatomic, readonly, strong) id<FBSDKAppLink> appLinkReferer;
73
74 /// The URL that was used to create this FBSDKURL.
75 @property (nonatomic, readonly, strong) NSURL *inputURL;
76
77 /// The query parameters of the inputURL, parsed into an NSDictionary.
78 @property (nonatomic, readonly, strong) NSDictionary<NSString *, id> *inputQueryParameters;
79
80 /// The flag indicating whether the URL comes from auto app link
81 @property (nonatomic, readonly, getter = isAutoAppLink) BOOL isAutoAppLink;
82
83 /**
84  Internal method exposed to facilitate transition to Swift.
85  API Subject to change or removal without warning. Do not use.
86
87  @warning INTERNAL - DO NOT USE
88  */
89 // UNCRUSTIFY_FORMAT_OFF
90 + (void)configureWithSettings:(id<FBSDKSettings>)settings
91                appLinkFactory:(id<FBSDKAppLinkCreating>)appLinkFactory
92          appLinkTargetFactory:(id<FBSDKAppLinkTargetCreating>)appLinkTargetFactory
93            appLinkEventPoster:(id<FBSDKAppLinkEventPosting>)appLinkEventPoster
94 NS_SWIFT_NAME(configure(settings:appLinkFactory:appLinkTargetFactory:appLinkEventPoster:));
95 // UNCRUSTIFY_FORMAT_ON
96
97 @end
98
99 NS_ASSUME_NONNULL_END
100
101 #endif