在兔小巢中传递自定义参数

tips 说明

兔小巢还支持传递一些自定义参数,比如用户的设备,版本信息等。

这些自定义参数会在用户发帖或回复时一同带进请求中。管理员可以在管理后台帖子列表看到用户发帖时携带的自定义参数,你也可以把它们导出来做进一步的数据分析(后续兔小巢将会支持数据分析功能)。

basic-information

自定义参数说明(以下参数皆为可选)

目前支持的参数如下,如果以下参数仍不满足需求,可以在 customInfo 中自定义参数。
根据国家个人信息保护相关法律法规、标准规范相关要求,自定义参数禁止传递以下信息:唯一设备识别码(如IMEI/android ID/IDFA/OPENUDID/GUID、SIM卡IMSI信息等)、应用列表、硬件序列号、设备MAC地址等。

参数名 类型 说明
clientInfo string 客户端信息
clientVersion string 客户端版本号
os string 操作系统
osVersion string 操作系统版本
netType string 网络类型
customInfo string 自定义字段,长度为 256

将用户反馈与其他信息关联(例如用户网络环境、APP版本号等),有助于更方便定位用户问题。
传递自定义参数的方式与传递登录态相同,直接在请求体中以 queryString 格式携带参数即可,兔小巢也支持 post 方式添加自定义参数。
其中小程序可以通过调用 <navigator> 组件 或者 wx.navigateToMiniProgram 方法,将自定义参数以 JSON 格式传入 customData 参数中。


以下为示例代码:

传递自定义参数直接使用 Tucao#set 即可,将需要的参数赋给 extraData

const Tucao = requirePlugin('tucao');

Tucao.set({
    // ...
    extraData: {
        clientVersion: '1.0.0',
        customInfo: '只是随便说说'
    }
});

方法1. 使用<navigator>组件

  <navigator target="miniProgram" open-type="navigate" app-id="wx8abaf00ee8c3202e" extra-data="{{ extraData }}" version="release">兔小巢</navigator>
extraData = {
    id : '1221', // 把1221数字换成你的产品ID,否则会不成功
    customData : {  // 自定义参数,具体参考文档
        clientInfo: ' iPhone OS 10.3.1 / 3.2.0.43 / 0 ',
    }
}

方法2. 使用wx.navigateToMiniProgram

wx.navigateToMiniProgram({
    appId: 'wx8abaf00ee8c3202e', // 目标为兔小巢社区小程序AppID(固定)
    extraData: {  // 需要传递的参数
        id: '1221',  // 把1221数字换成你的产品ID,否则会不成功
        customData: {
            clientInfo: ' iPhone OS 10.3.1 / 3.2.0.43 / 0 ',
        }
    }
});

需要注意,由于微信调整了跳转策略,需要在 app.json 中添加相应的属性,具体文档


{
  // ....
  "navigateToMiniProgramAppIdList": [
    "wx8abaf00ee8c3202e"
  ]
}
NSString *clientInfo = @" iPhone OS 10.3.1 / 3.2.0.43 / 0 ";

/**
    获得 webview url,请注意url单词是product而不是products,products是旧版本的参数,用错地址将不能成功提交
    @params{string} productId 对应产品的 id
*/

NSString *appUrl = @"https://support.qq.com/product/1221"; // 把1221数字换成你的产品ID,否则会不成功
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:appUrl]];

[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];// 请求头

// 设置请求类型为 POST或 GET,视需求来定
[request setHTTPMethod:@"POST"];
// 设置请求体
NSString *body = [NSString stringWithFormat:@"clientInfo=%@", clientInfo];
[request setHTTPBody:[body dataUsingEncoding:NSUTF8StringEncoding]];
webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
[self.view addSubview: webView];
[webView loadRequest:request];
webView = (WebView) findViewById(R.id.webview1);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);          // 这个要加上

/** app准备好这些参数 如不需要传空字符串即可 */
String clientInfo = " iPhone OS 10.3.1 / 3.2.0.43 / 0 ";

/* 获得 webview url,请注意url单词是product而不是products,products是旧版本的参数,用错地址将不能成功提交 */
String url = "https://support.qq.com/product/1221";// 把1221数字换成你的产品ID,否则会不成功
/* 准备post参数 */
String postData = "clientInfo=" + clientInfo; 
webView.postUrl(url, postData.getBytes());
<!-- 需要使用 form 表单传递的自定义参数,请注意url单词是product而不是products,products是旧版本的参数,用错地址将不能成功提交 -->
<form method="post" action="https://support.qq.com/product/1221"> <!--把1221数字换成你的产品ID,否则会不成功-->
    <input type="hidden"  name="nickname" value="tucao_test">
    <input type="hidden"  name="avatar" value="https://txc.qq.com/static/desktop/img/products/def-product-logo.png">
    <input type="hidden"  name="openid" value="tucao_123">
    <input type="hidden"  name="clientInfo" value="iPhone OS 10.3.1 / 3.2.0.43 / 0">
    <button type='submit'>
</form>

也可以使用我们提供的工具包 tucao.js,然后调用 Tucao.request()即可。

以下为示例代码:

var data = {
    // nickname,avatar,openid 必填
    "nickname": "tucao_test", 
    "avatar": "https://txc.qq.com/static/desktop/img/products/def-product-logo.png", 
    "openid": "tucao_123", 
    // 参照 customData 里面的参数名设置
    clientInfo: " iPhone OS 10.3.1 / 3.2.0.43 / 0 ",
},
productId = 1221; // 把1221数字换成你的产品ID,否则会不成功

Tucao.request(productId, data);

tips 常见问题

如何验证自定义参数添加正确?

在你的产品上通过兔小巢反馈一条内容,用管理员账号登录管理后台(txc.qq.com)

反馈管理 -> 全部反馈 -> 其他信息,能看到正确的自定义参数即为添加正确 。

custom-parameter