Skip to content

冷启动时候无法获取标签参数 #733

Description

@taozhixiang

fluwx.addSubscriber((response) {
// 1. 为安卓和ios分开处理响应
if (response is WeChatShowMessageFromWXRequest) {
debugPrint("launch-app-from-h5 on android");
// 从微信启动后,在这里只为 android 做一些事情
} else if (response is WeChatLaunchFromWXRequest) {
debugPrint("launch-app-from-h5 on ios");
// 从微信启动后,在这里只为 ios 做一些事情
}

// 2. 或者为安卓和ios一起处理响应
if (response is WeChatLaunchFromWXRequest ||
    response is WeChatShowMessageFromWXRequest) {
  debugPrint("launch-app-from-h5");
  // 从微信启动后,在这里为 android 和 ios 做一些事情
}

}); 这个方法在冷启动的时候里面没有执行,怎么获取微信标签传递的参数呢?

Activity

  1. Chihiro-bit commented on Dec 5, 2025

    @Chihiro-bit

    冷啟動時,微信是通過scheme打開的,如果監聽深度鏈接可以獲取到_wechat_sdk_biz_data,但這個數據沒辦法在dart解析。我在插件裡加這個方法來解析的

    /// 解析 _wechat_sdk_biz_data,傳入原始字串(可能是 URL encoded)
    /// 成功時回傳 NSDictionary(bplist 裡的所有 key),失敗回傳 nil
    - (NSDictionary *)parseWechatBizDataFromString:(NSString *)raw {
        if (raw.length == 0) return nil;
    
        // 先 URL decode 一次(有些情況會被 encode)
        NSString *decoded = raw.stringByRemovingPercentEncoding ?: raw;
    
        // base64 padding,不是 4 的倍數就補 '='
        while (decoded.length % 4 != 0) {
            decoded = [decoded stringByAppendingString:@"="];
        }
    
        NSData *data = [[NSData alloc] initWithBase64EncodedString:decoded options:0];
        if (!data) {
            NSLog(@"[FluwxPlugin] base64 decode _wechat_sdk_biz_data 失敗");
            return nil;
        }
    
        NSError *error = nil;
        id plist = [NSPropertyListSerialization propertyListWithData:data
                                                             options:NSPropertyListImmutable
                                                              format:NULL
                                                               error:&error];
        if (error || ![plist isKindOfClass:[NSDictionary class]]) {
            NSLog(@"[FluwxPlugin] 解析 bplist 失敗: %@", error);
            return nil;
        }
    
        return (NSDictionary *)plist;
    }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions