在兔小巢中传递自定义参数
说明
兔小巢还支持传递一些自定义参数,比如用户的设备,版本信息等。
这些自定义参数会在用户发帖或回复时一同带进请求中。管理员可以在管理后台帖子列表看到用户发帖时携带的自定义参数,你也可以把它们导出来做进一步的数据分析(后续兔小巢将会支持数据分析功能)。
自定义参数说明(以下参数皆为可选)
目前支持的参数如下,如果以下参数仍不满足需求,可以在 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);
常见问题
如何验证自定义参数添加正确?
在你的产品上通过兔小巢反馈一条内容,用管理员账号登录管理后台(txc.qq.com)
反馈管理 -> 全部反馈 -> 其他信息,能看到正确的自定义参数即为添加正确 。