API Reference

MiniAppPlugin

@objcMembers
open class MiniAppService {
    
    /**
     使用指定的配置设置 Mini App 插件。
     
     - Parameters:
     - appName: Mini App 的名称。
     - webAppName: Web App的名字。
     - mePath: Mini App 的路径数组。
     - window: Mini App 关联的 UIWindow 对象。
     - languageCode: 本地化的语言代码。
     - userInterfaceStyle: Mini App 的用户界面样式(默认为 .light)。
     - maxCachePage: 最大缓存页面数(默认为 5)。
     - appDelegate: 符合 IAppDelegate 协议的对象。
     - resourceProvider: 符合 IResourceProvider 协议的可选对象。
     */
    open func setup(appName: String,
                    webAppName: String,
                    mePath: [String],
                    window: UIWindow,
                    languageCode: String,
                    userInterfaceStyle: UIUserInterfaceStyle = .light,
                    maxCachePage: Int = 5,
                    appDelegate: IAppDelegate,
                    resourceProvider: IResourceProvider? = nil) -> Void {}
    
    /**
     更新 Mini App 的主题。
     
     - Parameters:
     - userInterfaceStyle: 更新后的 UIUserInterfaceStyle。
     */
    open func updateTheme(userInterfaceStyle: UIUserInterfaceStyle) {}
    
    /**
     更新 Mini App 的语言。
     
     - Parameters:
     - languageCode: 更新后的语言代码。
     */
    open func updateLanguage(languageCode: String) {}
    
    /**
     预加载 Mini App,并使用指定的配置。
     
     - Parameters:
     - config: 包含 Mini App 配置的 WebAppLaunchParameters 对象。
     */
    open func preload(config: WebAppLaunchParameters) {}
    
    /**
     启动 Mini App 并返回对应的视图控制器。
     
     - Parameters:
     - config: 包含 Mini App 配置的 WebAppLaunchParameters 对象。
     
     - Returns: 表示 Mini App 的 IMiniApp 对象。
     */
    open func launch(config: WebAppLaunchParameters) -> IMiniApp? { return nil }
    
    /**
     在测试模式下设置 Mini App 的代理。
     
     - Parameters:
     - appDelegate: 符合 IAppDelegate 协议的对象。
     */
    open func setupInTestDelegate(appDelegate: IAppDelegate) {}
    
    /**
     获取当前 Mini App 的账户上下文。
     
     - Returns: 表示账户上下文的 AccountContext 对象,如果不存在则返回 nil。
     */
    open func getContext() -> AccountContext? {
        return nil
    }
}

IMiniApp

public protocol IMiniApp {
    /**
     请求关闭MiniApp。
     
     - Parameters:
        - forece: true,强制关闭miniapp。
     
     - Returns: true,可以正常关闭, false,需要处理其他关闭确认,如需要返回子页面或者关闭弹窗确认。
    */
    func requestDismiss(_ forece: Bool) -> Bool
}

IResourceProvider

public protocol IResourceProvider {
    /**
     判断当前是否为深色模式。
     
     - Returns: 返回一个布尔值,指示当前是否为深色模式。
    */
    func isDark() -> Bool
    
    /**
     根据指定的键获取对应的字符串。
     
     - Parameters:
        - key: 字符串的键。
     
     - Returns: 返回对应的字符串。
    */
    func getString(key: String) -> String
    
    /**
     根据指定的键和值列表获取格式化后的字符串。
     
     - Parameters:
        - key: 字符串的键。
        - values: 值列表,用于替换字符串中的占位符。
     
     - Returns: 返回格式化后的字符串。
    */
    func getString(key: String, withValues values: [CVarArg]) -> String
    
    /**
     根据指定的键获取对应的颜色。
     
     - Parameters:
        - key: 颜色的键。
     
     - Returns: 返回对应的颜色。
    */
    func getColor(key: String) -> UIColor
    
    /**
     获取当前的用户界面样式。
     
     - Returns: 返回当前的用户界面样式。
    */
    func getUserInterfaceStyle() -> UIUserInterfaceStyle
}

IAppDelegate

public protocol IAppDelegate {
    /**
     生成二维码提供者,并返回一个导航控制器。
     
     - Parameters:
        - content: 二维码内容。
        - completion: 生成二维码后的回调闭包,返回生成的二维码字符串。
     
     - Returns: 返回一个导航控制器,用于二维码扫码功能。
    */
    var qrcodeProvider: (String?, @escaping (String?) -> Void) -> UINavigationController? { get }
    
    /**
     自定义方法提供者。
     
     - Parameters:
        - methodName: 方法名称。
        - params: 方法参数。
        - completion: 方法执行后的回调闭包,返回执行结果。
    */
    var customMethodProvider: (String, String?, @escaping (String?) -> Void) -> Void { get }
    
    /**
     附加操作提供者。
     
     - Parameters:
        - action: 操作名称。
        - params: 操作参数。
    */
    var attachActionProvider: (String?, String) -> Void { get }
    
    
    /**
     在应用内切换到新会话。
     
     - Parameters:
        - query: 查询字符串。
        - types: 类型列表。
     
     - Returns: 返回一个布尔值,指示是否成功切换到新会话。
    */
    func switchInlineQuery(query: String, types: [String]) async -> Bool
    
    /**
     检查当前会话是否支持并授权发送消息功能。
     
     - Returns: 返回一个布尔值,指示当前会话是否支持并授权发送消息功能。
    */
    func checkPeerMessageAccess() async -> Bool
    
    /**
     请求当前会话授权发送消息功能。
     
     - Returns: 返回一个布尔值,指示是否成功请求授权发送消息功能。
    */
    func requestPeerMessageAccess() async -> Bool
    
    /**
     发送消息给当前会话。
     
     - Parameters:
        - content: 消息内容。
     
     - Returns: 返回一个布尔值,指示是否成功发送消息。
    */
    func sendMessageToPeer(content: String?) async -> Bool
    
    /**
     请求将手机号码发送给当前会话。
     
     - Returns: 返回一个布尔值,指示是否成功请求发送手机号码给当前会话。
    */
    func requestPhoneNumberToPeer() async -> Bool
    
    /**
     获取生物认证信息,包括 APP 证书授权、人脸识别、指纹识别等。
     
     - Returns: 返回 BiometryInfo 对象,包含生物认证信息。
    */
    func getBiometryInfo() async -> BiometryInfo?
    
    /**
     请求授权生物认证功能。
     
     - Parameters:
        - reason: 请求授权的原因。
     
     - Returns: 返回 BiometryInfo 对象,包含授权后的生物认证信息。
    */
    func requestBiometryAccess(reason: String?) async -> BiometryInfo?
    
    /**
     请求进行生物认证。
     
     - Parameters:
        - reason: 请求认证的原因。
     
     - Returns: 返回一个布尔值和一个字符串元组,表示认证是否成功和认证生成的 Token 值。布尔值为 true 表示认证成功,字符串为 Token 值;布尔值为 false 表示认证失败,字符串为 nil。
    */
    func requestBiometryAuth(reason: String?) async -> (Bool, String?)
    
    /**
     请求更新生物认证 Token。
     
     - Parameters:
        - token: 要更新的生物认证 Token。
        - reason: 请求更新的原因。
     
     - Returns: 返回一个布尔值和一个字符串元组,表示更新是否成功和更新后的 Token 值。布尔值为 true 表示更新成功,字符串为更新后的 Token 值;布尔值为 false 表示更新失败,字符串为 nil。
    */
    func updateBiometryToken(token: String?, reason: String?) async -> (Bool, String?)
    
    /**
     打开生物认证设置界面。
    */
    func openBiometrySettings() async -> Void
    
    /**
     分享 Mini App。
     
    - Parameters:
        - url: Mini App 的 URL。
    */
    func shareWebApp(url: String) -> Void
}