123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- /*
- * Copyright 2019 Google
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- #import <Foundation/Foundation.h>
-
- NS_ASSUME_NONNULL_BEGIN
-
- @class FIRInstanceIDBackupExcludedPlist;
- @class FIRInstanceIDCheckinPreferences;
- @class FIRInstanceIDCheckinStore;
- @class FIRInstanceIDTokenInfo;
- @class FIRInstanceIDTokenStore;
-
- @class FIRInstanceIDStore;
- @protocol FIRInstanceIDStoreDelegate <NSObject>
-
- /**
- * This is called when the store has decided to invalide its tokens associated with the
- * previous checkin credentials. After deleting the tokens locally, it calls this method
- * to notify the delegate of the change. If possible, the delegate should use this time
- * to request the invalidation of the tokens on the server as well.
- */
- - (void)store:(FIRInstanceIDStore *)store
- didDeleteFCMScopedTokensForCheckin:(FIRInstanceIDCheckinPreferences *)checkin;
-
- @end
-
- /**
- * Used to persist the InstanceID tokens. This is also used to cache the Checkin
- * credentials. The store also checks for stale entries in the store and
- * let's us know if things in the store are stale or not. It does not however
- * acts on stale entries in anyway.
- */
- @interface FIRInstanceIDStore : NSObject
-
- /**
- * The delegate set in the initializer which is notified of changes in the store.
- */
- @property(nonatomic, readonly, weak) NSObject<FIRInstanceIDStoreDelegate> *delegate;
-
- - (instancetype)init __attribute__((unavailable("Use initWithDelegate: instead.")));
-
- /**
- * Initialize a default store to persist InstanceID tokens and options.
- *
- * @param delegate The delegate with which to be notified of changes in the store.
- * @return Store to persist InstanceID tokens.
- */
- - (instancetype)initWithDelegate:(NSObject<FIRInstanceIDStoreDelegate> *)delegate;
-
- /**
- * Initialize a store with the token store used to persist tokens, and a checkin store.
- * Used for testing.
- *
- * @param checkinStore Persistent store that persists checkin preferences.
- * @param tokenStore Persistent store that persists tokens.
- *
- * @return Store to persist InstanceID tokens and options.
- */
- - (instancetype)initWithCheckinStore:(FIRInstanceIDCheckinStore *)checkinStore
- tokenStore:(FIRInstanceIDTokenStore *)tokenStore
- delegate:(NSObject<FIRInstanceIDStoreDelegate> *)delegate
- NS_DESIGNATED_INITIALIZER;
-
- #pragma mark - Save
- /**
- * Save the instanceID token info to the store.
- *
- * @param tokenInfo The token info to store.
- * @param handler The callback handler which is invoked when the operation is complete,
- * with an error if there is any.
- */
- - (void)saveTokenInfo:(FIRInstanceIDTokenInfo *)tokenInfo handler:(void (^)(NSError *))handler;
-
- #pragma mark - Get
-
- /**
- * Get the cached token info.
- *
- * @param authorizedEntity The authorized entity for which we want the token.
- * @param scope The scope for which we want the token.
- *
- * @return The cached token info if any for the given authorizedEntity and scope else
- * returns nil.
- */
- - (nullable FIRInstanceIDTokenInfo *)tokenInfoWithAuthorizedEntity:(NSString *)authorizedEntity
- scope:(NSString *)scope;
- /**
- * Return all cached token infos from the Keychain.
- *
- * @return The cached token infos, if any, that are stored in the Keychain.
- */
- - (NSArray<FIRInstanceIDTokenInfo *> *)cachedTokenInfos;
-
- #pragma mark - Delete
-
- /**
- * Remove the cached token for a given authorizedEntity and scope. If the token was never
- * cached or deleted from the cache before this is a no-op.
- *
- * @param authorizedEntity The authorizedEntity for the cached token.
- * @param scope The scope for the cached token
- */
- - (void)removeCachedTokenWithAuthorizedEntity:(NSString *)authorizedEntity scope:(NSString *)scope;
-
- /**
- * Removes all cached tokens from the persistent store. In case deleting the cached tokens
- * fails we try to delete the backup excluded plist that stores the tokens.
- *
- * @param handler The callback handler which is invoked when the operation is complete,
- * with an error if there is any.
- *
- */
- - (void)removeAllCachedTokensWithHandler:(nullable void (^)(NSError *error))handler;
-
- #pragma mark - Persisting Checkin Preferences
-
- /**
- * Save the checkin preferences
- *
- * @param preferences Checkin preferences to save.
- * @param handler The callback handler which is invoked when the operation is complete,
- * with an error if there is any.
- */
- - (void)saveCheckinPreferences:(FIRInstanceIDCheckinPreferences *)preferences
- handler:(nullable void (^)(NSError *error))handler;
-
- /**
- * Return the cached checkin preferences.
- *
- * @return Checkin preferences.
- */
- - (FIRInstanceIDCheckinPreferences *)cachedCheckinPreferences;
-
- /**
- * Remove the cached checkin preferences from the store.
- *
- * @param handler The callback handler which is invoked when the operation is complete,
- * with an error if there is any.
- */
- - (void)removeCheckinPreferencesWithHandler:(nullable void (^)(NSError *error))handler;
-
- #pragma mark - Standard Directory sub-directory
-
- /**
- * Check if supported directory has InstanceID subdirectory
- *
- * @return YES if the Application Support directory has InstanceID subdirectory else NO.
- */
- + (BOOL)hasSubDirectory:(NSString *)subDirectoryName;
-
- /**
- * Create InstanceID subdirectory in Application support directory.
- *
- * @return YES if the subdirectory was created successfully else NO.
- */
- + (BOOL)createSubDirectory:(NSString *)subDirectoryName;
-
- /**
- * Removes Application Support subdirectory for InstanceID.
- *
- * @param error The error object if any while trying to delete the sub-directory.
- *
- * @return YES if the deletion was successful else NO.
- */
- + (BOOL)removeSubDirectory:(NSString *)subDirectoryName error:(NSError **)error;
-
- @end
-
- NS_ASSUME_NONNULL_END
|