lpw
2022-02-15 df1e8e61ffd4f44c1225b3d3808fab6516ba6e93
commit | author | age
a6c014 1 /*
L 2  * Copyright 2019 Google
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #import <Foundation/Foundation.h>
18
19 @class FIRApp;
20 @class FIRInstallationsAuthTokenResult;
21
22 NS_ASSUME_NONNULL_BEGIN
23
24 /** A notification with this name is sent each time an installation is created or deleted. */
df1e8e 25 // clang-format off
L 26 // clang-format12 merges the next two lines.
454098 27 FOUNDATION_EXPORT const NSNotificationName FIRInstallationIDDidChangeNotification
L 28     NS_SWIFT_NAME(InstallationIDDidChange);
a6c014 29 /** `userInfo` key for the `FirebaseApp.name` in `FIRInstallationIDDidChangeNotification`. */
454098 30 FOUNDATION_EXPORT NSString *const kFIRInstallationIDDidChangeNotificationAppNameKey
L 31     NS_SWIFT_NAME(InstallationIDDidChangeAppNameKey);
df1e8e 32 // clang-format on
a6c014 33
L 34 /**
35  * An installation ID handler block.
36  * @param identifier The installation ID string if exists or `nil` otherwise.
37  * @param error The error when `identifier == nil` or `nil` otherwise.
38  */
39 typedef void (^FIRInstallationsIDHandler)(NSString *__nullable identifier,
40                                           NSError *__nullable error)
41     NS_SWIFT_NAME(InstallationsIDHandler);
42
43 /**
44  * An authorization token handler block.
45  * @param tokenResult An instance of `InstallationsAuthTokenResult` in case of success or `nil`
46  * otherwise.
47  * @param error The error when `tokenResult == nil` or `nil` otherwise.
48  */
49 typedef void (^FIRInstallationsTokenHandler)(
50     FIRInstallationsAuthTokenResult *__nullable tokenResult, NSError *__nullable error)
51     NS_SWIFT_NAME(InstallationsTokenHandler);
52
53 /**
54  * The class provides API for Firebase Installations.
55  * Each configured `FirebaseApp` has a corresponding single instance of `Installations`.
56  * An instance of the class provides access to the installation info for the `FirebaseApp` as well
57  * as the ability to delete it. A Firebase Installation is unique by `FirebaseApp.name` and
58  * `FirebaseApp.options.googleAppID` .
59  */
60 NS_SWIFT_NAME(Installations)
61 @interface FIRInstallations : NSObject
62
63 - (instancetype)init NS_UNAVAILABLE;
64
65 /**
66  * Returns a default instance of `Installations`.
67  * @returns An instance of `Installations` for `FirebaseApp.defaultApp().
68  * @throw Throws an exception if the default app is not configured yet or required  `FirebaseApp`
69  * options are missing.
70  */
71 + (FIRInstallations *)installations NS_SWIFT_NAME(installations());
72
73 /**
74  * Returns an instance of `Installations` for an application.
75  * @param application A configured `FirebaseApp` instance.
76  * @returns An instance of `Installations` corresponding to the passed application.
77  * @throw Throws an exception if required `FirebaseApp` options are missing.
78  */
df1e8e 79 + (FIRInstallations *)installationsWithApp:(FIRApp *)application
L 80     NS_SWIFT_NAME(installations(app:));
a6c014 81
L 82 /**
83  * The method creates or retrieves an installation ID. The installation ID is a stable identifier
84  * that uniquely identifies the app instance. NOTE: If the application already has an existing
85  * FirebaseInstanceID then the InstanceID identifier will be used.
86  * @param completion A completion handler which is invoked when the operation completes. See
87  * `InstallationsIDHandler` for additional details.
88  */
89 - (void)installationIDWithCompletion:(FIRInstallationsIDHandler)completion;
90
91 /**
454098 92  * Retrieves (locally if it exists or from the server) a valid installation auth token. An existing
L 93  * token may be invalidated or expired, so it is recommended to fetch the installation auth token
94  * before each server request. The method does the same as `Installations.authTokenForcingRefresh(:,
a6c014 95  * completion:)` with forcing refresh `NO`.
L 96  * @param completion A completion handler which is invoked when the operation completes. See
97  * `InstallationsTokenHandler` for additional details.
98  */
99 - (void)authTokenWithCompletion:(FIRInstallationsTokenHandler)completion;
100
101 /**
454098 102  * Retrieves (locally or from the server depending on `forceRefresh` value) a valid installation
L 103  * auth token. An existing token may be invalidated or expire, so it is recommended to fetch the
104  * installation auth token before each server request. This method should be used with `forceRefresh
105  * == YES` when e.g. a request with the previously fetched installation auth token failed with "Not
106  * Authorized" error.
107  * @param forceRefresh If `YES` then the locally cached installation auth token will be ignored and
108  * a new one will be requested from the server. If `NO`, then the locally cached installation auth
109  * token will be returned if exists and has not expired yet.
a6c014 110  * @param completion  A completion handler which is invoked when the operation completes. See
L 111  * `InstallationsTokenHandler` for additional details.
112  */
113 - (void)authTokenForcingRefresh:(BOOL)forceRefresh
114                      completion:(FIRInstallationsTokenHandler)completion;
115
116 /**
117  * Deletes all the installation data including the unique identifier, auth tokens and
118  * all related data on the server side. A network connection is required for the method to
119  * succeed. If fails, the existing installation data remains untouched.
120  * @param completion A completion handler which is invoked when the operation completes. `error ==
121  * nil` indicates success.
122  */
123 - (void)deleteWithCompletion:(void (^)(NSError *__nullable error))completion;
124
125 @end
126
127 NS_ASSUME_NONNULL_END