BBASMPlugin+Storage.h 8.4 KB
//
//  BBASMPlugin+Storage.h
//  SWAN
//
//  Created by baidu on 2017/11/24.
//  Copyright © 2017年 baidu. All rights reserved.
//

/*
 每个手百小程序都可以有自己的本地缓存,可以通过 setStorage(setStorageSync)、getStorage(getStorageSync)、clearStorage(clearStorageSync)可以对本地缓存进行设置、获取和清理。同一个手百用户,同一个小程序 storage 上限为 10MB。localStorage 以用户维度隔离,同一台设备上,A 用户无法读取到 B 用户的数据。
 
 注意: localStorage 是持久存储的,但是我们不建议将关键信息全部存在 localStorage,以防用户换设备的情况。
 */
#import "BBASMPlugin.h"

@interface BBASMPlugin (Storage)

/*
 * @brief 性能数据监控使用:获取缓存大小
 *
 * @param appID 小程序id
 * @return 缓存大小
 */
+ (unsigned long long)getStorageFileSize:(NSString *)appID;

/**
 * 描  述: 将 data 存储在本地缓存中指定的 key 中
 * 示  例: baiduboxapp://swanAPI/setStorage?params=\$params&callback=\$callback
 * 文  档: http://ft.baidu.com/#/scheme/swan_setstorage
 * 备  注:
 * ********** description ************
 * @name:      setStorage
 * @authority: swanAPI
 * @path:      /setStorage
 * @args:      [{"name": "key", "value": "string"}, {"name": "data", "value": "*"}]
 * @config:    {"swan": {"web": {"invoke": "swan.message.url", "handler": "bridge"}, "jsc": {"invoke": "swan.method.json", "method": "_naSwan.bridge.storage.setStorage"}}}
 */
- (void)setStorage:(BBASchemeDispatcher *)dispatcher;

/**
 * 描  述: 将 data 存储在本地缓存中指定的 key 中
 * 示  例: baiduboxapp://swanAPI/setStorageSync?params=\$params&callback=\$callback
 * 文  档: http://ft.baidu.com/#/scheme/swan_setstoragesync
 * 备  注:
 * ********** description ************
 * @name:      setStorageSync
 * @authority: swanAPI
 * @path:      /setStorageSync
 * @args:      [{"name": "key", "value": "string"}, {"name": "data", "value": "*"}]
 * @config:    {"swan": {"web": {"invoke": "swan.prompt"}, "jsc": {"invoke": "swan.method.json", "method": "_naSwan.bridge.setStorageSync"}}}
 */
- (void)setStorageSync:(BBASchemeDispatcher *)dispatcher;

/**
 * 描  述: 从本地缓存中异步获取指定 key 对应的内容
 * 示  例: baiduboxapp://swanAPI/getStorage?params=\$params&callback=\$callback
 * 文  档: http://ft.baidu.com/#/scheme/swan_getstorage
 * 备  注:
 * ********** description ************
 * @name:      getStorage
 * @authority: swanAPI
 * @path:      /getStorage
 * @args:      [{"name": "key", "value": "string"}]
 * @config:    {"swan": {"web": {"invoke": "swan.message.url", "handler": "bridge"}, "jsc": {"invoke": "swan.method.json", "method": "_naSwan.bridge.storage.getStorage"}}}
 */
- (void)getStorage:(BBASchemeDispatcher *)dispatcher;

/**
 * 描  述: 从本地缓存中同步获取指定 key 对应的内容
 * 示  例: baiduboxapp://swanAPI/getStorageSync?params=\$params&callback=\$callback
 * 文  档: http://ft.baidu.com/#/scheme/swan_getstoragesync
 * 备  注:
 * ********** description ************
 * @name:      getStorageSync
 * @authority: swanAPI
 * @path:      /getStorageSync
 * @args:      [{"name": "key", "value": "string"}]
 * @config:    {"swan": {"web": {"invoke": "swan.prompt"}, "jsc": {"invoke": "swan.method.json", "method": "_naSwan.bridge.getStorageSync"}}}
 */
- (void)getStorageSync:(BBASchemeDispatcher	*)dispatcher;

/**
 * 描  述: 异步获取当前storage的相关信息
 * 示  例: baiduboxapp://swanAPI/getStorageInfo?params=\$params&callback=\$callback
 * 文  档: http://ft.baidu.com/#/scheme/swan_getstorageinfo
 * 备  注:
 * ********** description ************
 * @name:      getStorageInfo
 * @authority: swanAPI
 * @path:      /getStorageInfo
 * @args:      []
 * @config:    {"swan": {"web": {"invoke": "swan.message.url", "handler": "bridge"}, "jsc": {"invoke": "swan.method.json", "method": "_naSwan.bridge.storage.getStorageInfo"}}}
 */
- (void)getStorageInfo:(BBASchemeDispatcher *)dispatcher;

/**
 * 描  述: 同步获取当前storage的相关信息
 * 示  例: baiduboxapp://swanAPI/getStorageInfoSync?params=\$params&callback=\$callback
 * 文  档: http://ft.baidu.com/#/scheme/swan_getstorageinfosync
 * 备  注:
 * ********** description ************
 * @name:      getStorageInfoSync
 * @authority: swanAPI
 * @path:      /getStorageInfoSync
 * @args:      []
 * @config:    {"swan": {"web": {"invoke": "swan.prompt"}, "jsc": {"invoke": "swan.method.json", "method": "_naSwan.bridge.getStorageInfoSync"}}}
 */
- (void)getStorageInfoSync:(BBASchemeDispatcher *)dispatcher;

/**
 * 描  述: 从本地缓存中异步移除指定 key
 * 示  例: baiduboxapp://swanAPI/removeStorage?params=\$params&callback=\$callback
 * 文  档: http://ft.baidu.com/#/scheme/swan_removestorage
 * 备  注:
 * ********** description ************
 * @name:      removeStorage
 * @authority: swanAPI
 * @path:      /removeStorage
 * @args:      [{"name": "key", "value": "string"}]
 * @config:    {"swan": {"web": {"invoke": "swan.message.url", "handler": "bridge"}, "jsc": {"invoke": "swan.method.json", "method": "_naSwan.bridge.storage.removeStorage"}}}
 */
- (void)removeStorage:(BBASchemeDispatcher *)dispatcher;

/**
 * 描  述: 从本地缓存中同步移除指定 key
 * 示  例: baiduboxapp://swanAPI/removeStorageSync?params=\$params&callback=\$callback
 * 文  档: http://ft.baidu.com/#/scheme/swan_removestoragesync
 * 备  注:
 * ********** description ************
 * @name:      removeStorageSync
 * @authority: swanAPI
 * @path:      /removeStorageSync
 * @args:      [{"name": "key", "value": "string"}]
 * @config:    {"swan": {"web": {"invoke": "swan.prompt"}, "jsc": {"invoke": "swan.method.json", "method": "_naSwan.bridge.removeStorageSync"}}}
 */
- (void)removeStorageSync:(BBASchemeDispatcher *)dispatcher;

/**
 * 描  述: 清理本地数据缓存
 * 示  例: baiduboxapp://swanAPI/clearStorage?params=\$params&callback=\$callback
 * 文  档: http://ft.baidu.com/#/scheme/swan_clearstorage
 * 备  注:
 * ********** description ************
 * @name:      clearStorage
 * @authority: swanAPI
 * @path:      /clearStorage
 * @args:      []
 * @config:    {"swan": {"web": {"invoke": "swan.message.url", "handler": "bridge"}, "jsc": {"invoke": "swan.method.json", "method": "_naSwan.bridge.storage.clearStorage"}}}
 */
- (void)clearStorage:(BBASchemeDispatcher *)dispatcher;

/**
 * 描  述: 同步清理本地数据缓存
 * 示  例: baiduboxapp://swanAPI/clearStorageSync?params=\$params&callback=\$callback
 * 文  档: http://ft.baidu.com/#/scheme/swan_clearstoragesync
 * 备  注:
 * ********** description ************
 * @name:      clearStorageSync
 * @authority: swanAPI
 * @path:      /clearStorageSync
 * @args:      []
 * @config:    {"swan": {"web": {"invoke": "swan.prompt"}, "jsc": {"invoke": "swan.method.json", "method": "_naSwan.bridge.clearStorageSync"}}}
 */
- (void)clearStorageSync:(BBASchemeDispatcher *)dispatcher;

#pragma mark - not API
+ (NSDictionary *)getStorageWithAppID:(NSString *)appID
                                param:(NSDictionary *)param
                           actionName:(NSString *)action
                               isSync:(BOOL)isSync
                           completion:(void (^)(NSDictionary *))completion;

+ (NSDictionary *)setStorageWithAppID:(NSString *)appID
                                param:(NSDictionary *)param
                           actionName:(NSString *)action
                               isSync:(BOOL)isSync
                           completion:(void (^)(NSDictionary *))completion;

+ (NSDictionary *)removeStorageWithAppID:(NSString *)appID
                                   param:(NSDictionary *)param
                              actionName:(NSString *)action
                                  isSync:(BOOL)isSync
                              completion:(void (^)(NSDictionary *))completion;

+ (NSDictionary *)clearStorageWithAppID:(NSString *)appID
                                  param:(NSDictionary *)param
                             actionName:(NSString *)action
                                 isSync:(BOOL)isSync
                             completion:(void (^)(NSDictionary *))completion;

+ (NSDictionary *)getStorageInfoWithAppID:(NSString *)appID
                                    param:(NSDictionary *)param
                               actionName:(NSString *)action
                                   isSync:(BOOL)isSync
                               completion:(void (^)(NSDictionary *))completion;

@end