     public typealias WeChatOAuthForCodeCompletionHandler = (Result<String, Error>) -> Void
     public typealias PayCompletionHandler = (Result<Void, Error>) -> Void
     public typealias LaunchCompletionHandler = (Result<Void, Error>) -> Void
+    public typealias LaunchFromWeChatMiniAppCompletionHandler = (Result<String, Error>) -> Void
 
     static let shared = MonkeyKing()
 

    private var deliverCompletionHandler: DeliverCompletionHandler?
    private var payCompletionHandler: PayCompletionHandler?
    private var launchCompletionHandler: LaunchCompletionHandler?
    private var launchFromWeChatMiniAppHandler: ((String) -> Void)?
    private var openSchemeCompletionHandler: ((URL?) -> Void)?

    private override init() {}

                    let messageExtKey = "messageExt"
                    if success {
                        if let messageExt = info[messageExtKey] as? String {
                            shared.launchFromWeChatMiniAppCompletionHandler?(.success(messageExt))
                        } else {
                            shared.deliverCompletionHandler?(.success(nil))
                        }
                    } else {
                        if let messageExt = info[messageExtKey] as? String {
                            shared.launchFromWeChatMiniAppCompletionHandler?(.success(messageExt))
                            return true
                        } else {
                            let error: Error = resultCode == -2
