#import #import "FIRAnalytics.h" NS_ASSUME_NONNULL_BEGIN /// Provides App Delegate handlers to be used in your App Delegate. /// /// To save time integrating Firebase Analytics in an application, Firebase Analytics does not /// require delegation implementation from the AppDelegate if neither SwiftUI nor UIScene lifecycle /// is adopted. Instead this is automatically done by Firebase Analytics. Should you choose instead /// to delegate manually, you can turn off the App Delegate Proxy by adding /// FirebaseAppDelegateProxyEnabled into your app's Info.plist and setting it to boolean `NO`, and /// adding the methods in this category to corresponding delegation handlers. /// /// To handle Universal Links, you must return `true` in /// `UIApplicationDelegate.application(_:didFinishLaunchingWithOptions:)`. @interface FIRAnalytics (AppDelegate) /// Handles events related to a URL session that are waiting to be processed. /// /// 1. If SwiftUI lifecycle is adopted, call this method from /// `UIApplicationDelegate.application(_:handleEventsForBackgroundURLSession:completionHandler:)` /// in your app delegate. /// /// 2. If SwiftUI lifecycle is not adopted, Firebase Analytics does not require delegation /// implementation from the AppDelegate. If you choose instead to delegate manually, you can set /// FirebaseAppDelegateProxyEnabled to boolean `NO` in your app's Info.plist and call this method /// from /// `UIApplicationDelegate.application(_:handleEventsForBackgroundURLSession:completionHandler:)` /// in your app delegate. /// /// @param identifier The identifier of the URL session requiring attention. /// @param completionHandler The completion handler to call when you finish processing the events. /// Calling this completion handler lets the system know that your app's user interface is /// updated and a new snapshot can be taken. + (void)handleEventsForBackgroundURLSession:(NSString *)identifier completionHandler:(nullable void (^)(void))completionHandler; /// Handles the event when the app is launched by a URL (custom URL scheme or universal link). /// /// 1. If SwiftUI lifecycle is adopted, use `onOpenURL(perform:)` to register a handler and call /// this method in the handler. /// /// 2. If UIScene lifecycle is adopted, call this method from /// `UISceneDelegate.scene(_:willConnectTo:options:)` and /// `UISceneDelegate.scene(_:openURLContexts:)` when the URL contexts are available. /// /// 3. If neither SwiftUI nor UIScene lifecycle is adopted, Firebase Analytics does not require /// delegation implementation from the AppDelegate. If you choose instead to delegate manually, you /// can set FirebaseAppDelegateProxyEnabled to boolean `NO` in your app's Info.plist and call this /// method from `UIApplicationDelegate.application(_:open:options:)` in your app delegate. /// /// @param url The URL resource to open. This resource can be a network resource or a file. + (void)handleOpenURL:(NSURL *)url; /// Handles the event when the app receives data associated with user activity that includes a /// Universal Link. /// /// 1. If SwiftUI lifecycle is adopted, use `onOpenURL(perform:)` to register a handler and call /// `Analytics.handleOpen(_:)` instead in the handler. /// /// 2. If UIScene lifecycle is adopted, call this method from /// `UISceneDelegate.scene(_:willConnectTo:options:)` and `UISceneDelegate.scene(_:continue:)` when /// NSUserActivity is available. See the [Apple /// doc](https://developer.apple.com/documentation/xcode/supporting-universal-links-in-your-app) for /// more details. /// /// 3. If neither SwiftUI nor UIScene lifecycle is adopted, Firebase Analytics does not require /// delegation implementation from the AppDelegate. If you choose instead to delegate manually, you /// can set FirebaseAppDelegateProxyEnabled to boolean `NO` in your app's Info.plist and call this /// method from `UIApplication.application(_:continue:restorationHandler:)` in your app delegate. /// /// @param userActivity The activity object containing the data associated with the task the user /// was performing. + (void)handleUserActivity:(id)userActivity; @end NS_ASSUME_NONNULL_END