Files
MapLibreParticleLab/platform/darwin/include/MGLOfflineStorage.h

113 lines
4.3 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#import <Foundation/Foundation.h>
#import "MGLTypes.h"
NS_ASSUME_NONNULL_BEGIN
@class MGLOfflinePack;
@protocol MGLOfflineRegion;
/**
A block to be called once an offline pack has been completely created and
added.
@param pack Contains a pointer to the newly added pack, or `nil` if there was
an error creating or adding the pack.
@param error Contains a pointer to an error object (if any) indicating why the
pack could not be created or added. For a list of possible error codes, see
`MGLErrorCode`.
*/
typedef void (^MGLOfflinePackAdditionCompletionHandler)(MGLOfflinePack * _Nullable pack, NSError * _Nullable error);
/**
A block to be called once an offline pack has been completely invalidated and
removed.
@param error Contains a pointer to an error object (if any) indicating why the
pack could not be invalidated or removed.
*/
typedef void (^MGLOfflinePackRemovalCompletionHandler)(NSError * _Nullable error);
/**
A block to be called with a complete list of offline packs.
@param pack Contains a pointer an array of packs, or `nil` if there was an
error obtaining the packs.
@param error Contains a pointer to an error object (if any) indicating why the
list of packs could not be obtained.
*/
typedef void (^MGLOfflinePackListingCompletionHandler)(NS_ARRAY_OF(MGLOfflinePack *) *packs, NSError * _Nullable error);
/**
MGLOfflineStorage implements a singleton (shared object) that manages offline
packs. All of this class’s instance methods are asynchronous, reflecting the
fact that offline resources are stored in a database.
*/
@interface MGLOfflineStorage : NSObject
/**
Returns the shared offline storage object.
*/
+ (instancetype)sharedOfflineStorage;
- (instancetype)init NS_UNAVAILABLE;
/**
Creates and registers an offline pack that downloads the resources needed to
use the given region offline.
The resulting pack starts out with a state of `MGLOfflinePackStateInactive`. To
begin downloading resources, call `-[MGLOfflinePack resume]`. To monitor
download progress, set the pack’s `delegate` property to an object that
conforms to the `MGLOfflinePackDelegate` protocol.
@param region A region to download.
@param context Arbitrary data to store alongside the downloaded resources.
@param completion The completion handler to call once the pack has been added.
This handler is executed asynchronously on the main queue.
*/
- (void)addPackForRegion:(id <MGLOfflineRegion>)region withContext:(NSData *)context completionHandler:(nullable MGLOfflinePackAdditionCompletionHandler)completion;
/**
Unregisters the given offline pack and frees any resources that are no longer
required by any remaining packs.
As soon as this method is called on a pack, the pack becomes invalid; any
attempt to send it a message will result in an exception being thrown. If an
error occurs and the pack cannot be removed, do not attempt to reuse the pack
object. Instead, use the `-getPacksWithCompletionHandler:` method to obtain a
valid pointer to the pack object.
@param pack The offline pack to remove.
@param completion The completion handler to call once the pack has been
removed. This handler is executed asynchronously on the main queue.
*/
- (void)removePack:(MGLOfflinePack *)pack withCompletionHandler:(nullable MGLOfflinePackRemovalCompletionHandler)completion;
/**
Asynchronously calls a completion callback with all existing offline packs.
@param completion The completion handler to call with the list of packs. This
handler is executed asynchronously on the main queue.
*/
- (void)getPacksWithCompletionHandler:(MGLOfflinePackListingCompletionHandler)completion;
/**
Sets the maximum number of Mapbox-hosted tiles that may be downloaded and
stored on the current device.
Once this limit is reached,
`-[MGLOfflinePackDelegate offlinePack:didReceiveMaximumAllowedMapboxTiles:]` is
called on every delegate of `MGLOfflinePack` until already downloaded tiles are
removed by calling the `-removePack:withCompletionHandler:` method.
@note The [Mapbox Terms of Service](https://www.mapbox.com/tos/) prohibits
changing or bypassing this limit without permission from Mapbox. Contact
your Mapbox sales representative to have the limit raised.
*/
- (void)setMaximumAllowedMapboxTiles:(uint64_t)maximumCount;
@end
NS_ASSUME_NONNULL_END