lpw
2023-06-03 aca600212ff84587e15aad341babd5eb2faf69a5
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);
aca600 29 /** `userInfo` key for the `FirebaseApp.name` in `InstallationIDDidChangeNotification`. */
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)
aca600 41     NS_SWIFT_UNAVAILABLE("Use Swift's closure syntax instead.");
a6c014 42
L 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)
aca600 51     NS_SWIFT_UNAVAILABLE("Use Swift's closure syntax instead.");
a6c014 52
L 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`.
aca600 67  * @return An instance of `Installations` for `FirebaseApp.defaultApp().
a6c014 68  * @throw Throws an exception if the default app is not configured yet or required  `FirebaseApp`
L 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.
aca600 76  * @return An instance of `Installations` corresponding to the passed application.
a6c014 77  * @throw Throws an exception if required `FirebaseApp` options are missing.
L 78  */
aca600 79 + (FIRInstallations *)installationsWithApp:(FIRApp *)application NS_SWIFT_NAME(installations(app:));
a6c014 80
L 81 /**
82  * The method creates or retrieves an installation ID. The installation ID is a stable identifier
83  * that uniquely identifies the app instance. NOTE: If the application already has an existing
84  * FirebaseInstanceID then the InstanceID identifier will be used.
aca600 85  * @param completion A completion handler which is invoked when the operation completes.
a6c014 86  */
aca600 87 - (void)installationIDWithCompletion:(void (^)(NSString *__nullable identifier,
L 88                                                NSError *__nullable error))completion;
a6c014 89
L 90 /**
454098 91  * Retrieves (locally if it exists or from the server) a valid installation auth token. An existing
L 92  * token may be invalidated or expired, so it is recommended to fetch the installation auth token
aca600 93  * before each server request. The method does the same as
L 94  * `Installations.authToken(forcingRefresh:completion:)` with forcing refresh `false`.
95  * @param completion A completion handler which is invoked when the operation completes.
a6c014 96  */
aca600 97 - (void)authTokenWithCompletion:(void (^)(FIRInstallationsAuthTokenResult *__nullable tokenResult,
L 98                                           NSError *__nullable error))completion;
a6c014 99
L 100 /**
454098 101  * Retrieves (locally or from the server depending on `forceRefresh` value) a valid installation
L 102  * auth token. An existing token may be invalidated or expire, so it is recommended to fetch the
103  * installation auth token before each server request. This method should be used with `forceRefresh
aca600 104  * == true` when e.g. a request with the previously fetched installation auth token failed with "Not
454098 105  * Authorized" error.
aca600 106  * @param forceRefresh If `true` then the locally cached installation auth token will be ignored and
L 107  * a new one will be requested from the server. If `false`, then the locally cached installation
108  * auth token will be returned if exists and has not expired yet.
a6c014 109  * @param completion  A completion handler which is invoked when the operation completes. See
L 110  * `InstallationsTokenHandler` for additional details.
111  */
112 - (void)authTokenForcingRefresh:(BOOL)forceRefresh
aca600 113                      completion:(void (^)(FIRInstallationsAuthTokenResult *__nullable tokenResult,
L 114                                           NSError *__nullable error))completion;
a6c014 115
L 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