Commit 6a23c5dbb9a57d6c0cf1d5380de1caee8f7722ba

Authored by 小川 费
1 parent e6f13bf6
Exists in master

1

@@ -14,13 +14,11 @@ @@ -14,13 +14,11 @@
14 * [交叉推广位](stat_ads.md) 14 * [交叉推广位](stat_ads.md)
15 * [分享视频模块](share.md) 15 * [分享视频模块](share.md)
16 * [配置参数模块️](online.md) 16 * [配置参数模块️](online.md)
17 -* [多平台接口模块❎](platform.md)  
18 - * [支付打点❎](platform_pay.md)  
19 - * [授权按钮❎](platform_common.md#userbtn)  
20 - * [检测自动更新❎](platform_common.md#autoupdate)  
21 - * [打开客服消息❎](platform_common.md#service)  
22 - * [震动接口❎](platform_common.md#vibrate)  
23 - * [其他接口❎](platform_common.md#other) 17 +* [多平台接口模块](platform.md)
  18 + * [支付打点](platform.md#logpay)
  19 + * [检测自动更新](platform.md#checkUpdate)
  20 + * [打开客服消息](platform.md#service)
  21 + * [震动接口](platform.md#vibrate)
24 * [数据模块](data.md) 22 * [数据模块](data.md)
25 * [事件模块](event.md) 23 * [事件模块](event.md)
26 * [FAQ❎](faq.md) 24 * [FAQ❎](faq.md)
27 \ No newline at end of file 25 \ No newline at end of file
images/sdk_029.png 0 → 100644

103 KB

images/sdk_video_001.mp4 0 → 100644
No preview for this file type
images/sdk_video_002.mp4 0 → 100644
No preview for this file type
@@ -60,9 +60,8 @@ @@ -60,9 +60,8 @@
60 60
61 61
62 62
63 -  
64 * #### 根据运营提供的信息修改sdk文件夹下的**config**.js文件(可横向拖动查看查看更多====>)<div id="config"></div> 63 * #### 根据运营提供的信息修改sdk文件夹下的**config**.js文件(可横向拖动查看查看更多====>)<div id="config"></div>
65 - 64 +<div id="configJs"></div>
66 ```javascript 65 ```javascript
67 export default { 66 export default {
68 IsDebug: false, // 是否debug模式,debug模式会打印log,可使用stat模块setDebug api进行修改 67 IsDebug: false, // 是否debug模式,debug模式会打印log,可使用stat模块setDebug api进行修改
1 -# 多平台接口模块 1 +# 多平台接口模块:PCSDK.platform
2 2
3 ------ 3 ------
4 4
5 #### **简介** 5 #### **简介**
6 6
7 -启动注册打点上报用户注册活跃数据,噗嗤管理后台为游戏提供用户数据统计:实时获取活跃、新增用户数、打开次数、在线时长......;注册转化统计 7 +所谓多平台指的是微信小游戏、QQ轻游戏、今日头条、oppo等游戏发布的平台。微信和QQ接口文档api相似度99%,微信、QQ、今日头条平台的接口api相似度80%以上,虽然相似度很高,但是仍需要针对差异性做一些处理。多平台接口模块就是想要在SDK内部去抹平了各个平台差异性的处理,达到同一个api调用,应用多个平台的作用
8 8
  9 +#### **此模块是参照微信小游戏提供的api进行封装的公用方法,提供了以下游戏中常用到的功能:**
9 10
  11 +**支付打点:logPay** (此模块保留logPay调用只是为了兼容已经接入的游戏,该api已经归类到【统计模块】下面的[支付打点](stat_pay.md)栏)。
10 12
11 -#### **后台使用** 13 +**打开客服消息:openCustomerServiceConversation** 整理[wx.openCustomerServiceConversation](https://developers.weixin.qq.com/minigame/dev/api/open-api/customer-message/wx.openCustomerServiceConversation.html)
12 14
13 -完成启动注册打点后,登录后台->头部tab切换到【游戏数据】->【产品分析】->【实时数据】即可实时查看用户活跃、新增等信息:  
14 -![sdk文件目录结构](https://dep.miso-lab.com/sdkword/sdk_008.png "🔍点击查看大图") 15 +**检测版本更新:checkUpdate** 整理来自:[wx.getUpdateManager](https://developers.weixin.qq.com/minigame/dev/api/base/update/UpdateManager.html)
15 16
16 -点击【注册转化】可查看列表式显示新增、注册、加载完成等详细信息: 17 +**显示模态弹出框:showModal** 整理来自:[wx.showModal](https://developers.weixin.qq.com/minigame/dev/api/ui/interaction/wx.showModal.html)
17 18
18 -![sdk文件目录结构](https://dep.miso-lab.com/sdkword/sdk_009.png "🔍点击查看大图") 19 +**复制文本:copy** 整理来自:[wx.setClipboardData](https://developers.weixin.qq.com/minigame/dev/api/device/clipboard/wx.setClipboardData.html)
19 20
  21 +**长震动:vibrateLong** 整理来自:[wx.vibrateLong](https://developers.weixin.qq.com/minigame/dev/api/device/vibrate/wx.vibrateLong.html)
20 22
  23 +**短震动:vibrateShort** 整理来自:[wx.vibrateShort](https://developers.weixin.qq.com/minigame/dev/api/device/vibrate/wx.vibrateShort.html)
  24 +
  25 +**更新转发属性:updateShareMenu** 整理来自:[wx.updateShareMenu](https://developers.weixin.qq.com/minigame/dev/api/share/wx.updateShareMenu.html)
  26 +
  27 +**微信小游戏推荐弹窗组件GamePortal:isGamePortalPlaying 与 gamePortalShow** 整理来自:[wx.createGamePortal](https://developers.weixin.qq.com/minigame/dev/api/game-portal/GameBanner.html)
  28 +
  29 +**微信小游戏推荐icon组件GameIcon:gameIconShow 与 gameIconDestroy** 整理来自:[wx.createGameIcon](https://developers.weixin.qq.com/minigame/dev/api/game-portal/wx.createGameIcon.html)
  30 +
  31 +**微信小游戏插屏广告组件InterstitialAd:isInterstitialPlaying 与 interstitialShow** 整理来自:[wx.createInterstitialAd](https://developers.weixin.qq.com/minigame/dev/api/ad/InterstitialAd.html)
21 32
22 33
23 34
@@ -25,150 +36,319 @@ @@ -25,150 +36,319 @@
25 36
26 | **名称** | **功能说明** | 37 | **名称** | **功能说明** |
27 | ------------------------ | ------------------------------------------------------------ | 38 | ------------------------ | ------------------------------------------------------------ |
28 -| PCSDK.stat.loadingFinish | 加载游戏资源完成时打点,不是微信代码包白屏加载完成,游戏loading自身cdn资源加载完成调用 |  
29 -| PCSDK.stat.setLogind | 设置sdk必须要使用的用户id、第一次创建角色的注册时间,游戏接入方登录游戏服务器后调用 |  
30 -| PCSDK.stat.active | 用户活跃/新增注册上报,切记在setLogind设置需要的信息过后使用(不限于使用位置),不然会导致新增注册数据统计异常 |  
31 -  
32 - 39 +| PCSDK.platform.logPay | 支付统计打点,支付完成(取消、成功、失败)的打点 |
  40 +| PCSDK.platform.openCustomerServiceConversation | 进入客服会话,可打开一个普通的客服会话,也可打开客服会话发送体力、钻石和进入跳转充值等,[具体用法请看](platform.md#service)|
  41 +| PCSDK.platform.checkUpdate | 检测版本是否有更新,如果版本更新会弹出确认框 |
  42 +| PCSDK.platform.vibrateShort | 使手机发生较短时间的振动(15 ms) |
  43 +| PCSDK.platform.vibrateLong | 使手机发生较长时间的振动(400 ms) |
33 44
34 45
35 46
36 47
37 48
38 -1. **loadingFinish** 49 +<div id="logpay"></div>
  50 +1. **logPay**
39 51
40 ```javascript 52 ```javascript
41 - PCSDK.stat.loadingFinish(): void 53 + PCSDK.platform.logPay( params: object ): void
42 ``` 54 ```
43 55
44 - 定义:加载游戏加载资源完成时打点 56 + 定义:开发者游戏充值完成后,上报支付结果打点,支付结果类型:0(支付失败),1(支付成功),-1(取消支付)。该api需在[config.js中配置MidasPay](install.md#configJs)信息。
45 57
46 参数: 58 参数:
47 59
48 ``` 60 ```
  61 + params object 必传 打点参数
  62 + {
  63 + type: number 必传 支付类型:0(支付失败),1(支付成功),-1(取消支付);
  64 + source: string 必传 游戏服务商生成的订单号,没有则为空字符串
  65 + amount: number 必传 实际支付金额,单位分
  66 + buy_id: string | number; 必传 商品ID
  67 + buy_name: string; 必传 商品名称
  68 + item_info: string 必传 获得的道具内容:道具id及数量,逗号分隔,多项使用分号分隔 => 1,1;2,10;3,100
  69 + }
  70 + ```
  71 + 返回值:
  72 +
  73 + ```
  74 + void
49 75
50 ``` 76 ```
51 77
52 - 示例:加载完成游戏主界面图片、json资源打点 78 + 示例:客户端游戏支付完成后上报支付打点,下例只是演示logPay用法
53 79
54 ```javascript 80 ```javascript
55 - private async initEnv() {  
56 - await SDKTools.env(Const.VERSION);  
57 - this.loadRes();  
58 - this.loadLogin();  
59 - }  
60 -  
61 - // 开始加载资源  
62 - private loadRes() {  
63 - LoaderManager.I.setCallback(this.onLoadedMain, this.onProgressMain, null, this).loadMain();  
64 - }  
65 -  
66 - // 资源加载完成  
67 - private onLoadedMain() {  
68 - PCSDK.stat.loadingFinish()  
69 - }  
70 -  
71 - // 更新资源加载进度条  
72 - private onProgressMain(ret) {  
73 - let progress = ret.data;  
74 - this.skin.txtProgress.text = Math.floor(progress * 100) + '%'; 81 + private reqPay() {
  82 + Api.I.pay().then( ret => {
  83 + switch(ret.code){
  84 + case 1: // 支付成功回调处理
  85 + PCSDK.platform.logPay({
  86 + type: 1, // 成功支付
  87 + source: "10000400", // 订单号,没有则为空字符串
  88 + amount: 10 * 100, // 10元
  89 + buy_id: 58, // 支付的商品id
  90 + buy_name: "钻石*152,金币*188888888",
  91 + item_info: "40,152;90,188888888" // 例如 钻石id:40 金币id:90
  92 + });
  93 + break;
  94 +
  95 + case 0: // 支付失败回调处理
  96 + PCSDK.platform.logPay({
  97 + type: 0, // 失败支付
  98 + source: "10000400", // 订单号,没有则为空字符串
  99 + amount: 10 * 100, // 10元
  100 + buy_id: 58, // 支付的商品id
  101 + buy_name: "钻石*152,金币*188888888",
  102 + item_info: "40,152;90,188888888" // 例如 钻石id:40 金币id:90
  103 + });
  104 + break;
  105 +
  106 + case -1: // 支付取消回调处理
  107 + PCSDK.platform.logPay({
  108 + type: -1, // 取消支付
  109 + source: "10000400", // 订单号,没有则为空字符串
  110 + amount: 10 * 100, // 10元
  111 + buy_id: 58, // 支付的商品id
  112 + buy_name: "钻石*152,金币*188888888",
  113 + item_info: "40,152;90,188888888" // 例如 钻石id:40 金币id:90
  114 + });
  115 + break;
  116 + }
  117 + });
75 } 118 }
76 ``` 119 ```
77 -  
78 -2. **setLogind** 120 +<div id="service"></div>
  121 +2. **openCustomerServiceConversation**
79 122
80 ```javascript 123 ```javascript
81 - PCSDK.stat.setLogind( data: object ): void 124 + PCSDK.platform.openCustomerServiceConversation( params?: _CustomerServiceConversationObject ): void
82 ``` 125 ```
83 126
84 - 定义:游戏登录完成,得到登录用户的用户id和用户第一次注册时间,设置SDK必需的用户信息 127 + 定义:进入客服会话,可打开一个普通的客服会话,也可打开客服会话发送体力和进入跳转充值
85 128
86 参数: 129 参数:
87 130
88 ```javascript 131 ```javascript
89 - data: object  
90 -{  
91 - userId: string | number 必传, 用户唯一标识id  
92 - regTime: number 必传,用户第一次创建角色的注册时间戳 132 + params _CustomerServiceConversationObject 选传,不传递打开一个普通的客户会话。[参数说明参照](https://developers.weixin.qq.com/minigame/dev/api/open-api/customer-message/wx.openCustomerServiceConversation.html)
  133 + {
  134 + sessionFrom string 选传 会话来源
  135 + showMessageCard boolean 选传 是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示,用户点击后可以快速发送小程序消息
  136 + sendMessageTitle string 选传 会话内消息卡片标题
  137 + sendMessagePath string 选传 会话内消息卡片路径
  138 + sendMessageImg string 选传 会话内消息卡片图片路径
  139 + success function 选传 接口调用成功的回调函数
  140 + fail function 选传 接口调用失败的回调函数
  141 + complete function 选传 接口调用结束的回调函数(调用成功、失败都会执行)
93 } 142 }
94 ``` 143 ```
95 144
96 - 示例:游戏登录完成后,获取用户信息后进行打点(该示例,只是模拟使用环境) 145 + 示例1:进入普通的客服会话
97 146
98 ```javascript 147 ```javascript
99 - // 发起登录请求,得到登录数据信息,调用setLogind设置SDK用户信息  
100 - Api.login().then( data => {  
101 - let { user_id, user_reg_time } = data;  
102 - PCSDK.stat.setLogind({  
103 - userId: data.user_id,  
104 - regTime: data.user_reg_time  
105 - });  
106 - }); 148 + PCSDK.platform.openCustomerServiceConversation();
  149 + ```
  150 + 示例2:应用场景如进入客服会话跳转领取体力、钻石等等: 示例为跳转客服领取18888钻石奖励,success函数中记录数据状态(用于客服返回,执行onShow生命周期函数时逻辑判断)。
  151 + <iframe height=498 width=740 src="https://dep.miso-lab.com/sdkword/sdk_video_001.mp4" frameborder=0 allowfullscreen></iframe>
  152 +
  153 + ```javascript
  154 + // 跳转客服领取18888钻石奖励,开发者可根据示例修改
  155 + PCSDK.platform.openCustomerServiceConversation({
  156 + showMessageCard: true,
  157 + sendMessageTitle: '钻石已发送,点击领取钻石!',
  158 + sendMessagePath: '',
  159 + sendMessageImg: 'http://dep.miso-lab.com/mergeguns/bin/res/image/service_reward.png', // 图片icon对应的域名记得加入到request和download白名单中
  160 + success: () => {
  161 + // 打开跳转客服成功,记录成功状态,在游戏全局注册的onShow监听通过判断这个状态去请求接口领取奖励
  162 + // 记录数据状态,onShow的时候读取数据状态判断,只是演示操作,可根据实际情况修改
  163 + AppDataManager.I.set('service.reward.data', {
  164 + status: 1, // 可以领奖
  165 + reward: 18888 // 获得18888钻石
  166 + });
  167 + },
  168 + fail: (err) => {
  169 + console.log("openCustomerServiceConversation fail: ", err);
  170 + }
  171 + });
  172 +
  173 + // 在游戏中全局注册的onShow事件监听中检测是
  174 + // 游戏入口:Main.cs
  175 + class Main {
  176 + constructor() {
  177 + this.init();
  178 + }
  179 +
  180 + private init() {
  181 + PCSDK.event.add('app.show', this.onShow, this); // 等同于wx.onShow(this.onShow.bind(this));
  182 + PCSDK.event.add('app.hide', this.onHide, this); // 等同于wx.onHide(this.onHide.bind(this));
  183 + }
  184 +
  185 + private onShow(opts) {
  186 + // 判断是否是来源于客服会话,上面的openCustomerServiceConversation的success设置的数据状态做判断
  187 + let serviceRewardData = AppDataManager.I.get('service.reward.data');
  188 + if (serviceRewardData && serviceRewardData.status === 1) {
  189 + AppDataManager.I.set('service.reward.data', null);
  190 + // 奖励发放,处理发放后的逻辑,比如每天只能领取一次的记录,防止重复刷奖励
  191 + }
  192 + }
  193 +
  194 + private onHide(){
  195 + // 监听平台的onHide事件
  196 + }
  197 + }
107 ``` 198 ```
  199 + 示例3:应用场景例如进入客服会话,success函数中记录数据状态(用于客服返回,执行onShow生命周期函数时逻辑判断),点击右下角的充值按钮后,跳转充值,充值完成后在onShow中处理:需要后台提供api接口,验证充值合理性并发放奖励,**此接口需要后端支持**。
  200 + <iframe height=498 width=740 src="https://dep.miso-lab.com/sdkword/sdk_video_002.mp4" frameborder=0 allowfullscreen></iframe>
108 201
109 -3. **active** 202 + ```javascript
  203 + // 跳转客服充值,开发者可根据示例修改,sendMessagePath请严格按照示例中提供的参数
  204 + /**
  205 + * 充值跳转客服
  206 + * @param itemId 购买道具商品id
  207 + * @param money 购买商品花费,单位元
  208 + */
  209 + private openServiceWithItem(itemId: number, money: number) {
  210 + PCSDK.platform.openCustomerServiceConversation({
  211 + showMessageCard: true,
  212 + sendMessageTitle: `充值${money}元`,
  213 + sendMessagePath: `channel=${PCSDK.data.ChannelId}&item=${itemId}&uid=${PCSDK.data.UserId}&pf=${PCSDK.data.SystemId}`,
  214 + sendMessageImg: 'http://dep.miso-lab.com/idiom/bin/share/pay.png', // 图片icon对应的域名记得加入到request和download白名单中
  215 + success: () => {
  216 + // 打开跳转客服成功,记录成功状态,onShow通过判断这个状态去请求接口领取奖励
  217 + // 记录数据状态,onShow的时候读取数据状态判断,只是演示操作,可根据实际情况修改
  218 + AppDataManager.I.set('service.pay.data', {
  219 + status: 1, // 可以领奖
  220 + itemId: itemId, // 购买道具商品id
  221 + money: money // 购买商品花费,单位元
  222 + });
  223 + },
  224 + fail: (err) => {
  225 + console.log("openCustomerServiceConversation fail: ", err);
  226 + }
  227 + });
  228 + }
  229 +
  230 + // 在游戏中全局注册的onShow事件监听中检测是
  231 + // 游戏入口:Main.cs
  232 + class Main {
  233 + constructor() {
  234 + this.init();
  235 + }
  236 +
  237 + private init() {
  238 + PCSDK.event.add('app.show', this.onShow, this); // 等同于wx.onShow(this.onShow.bind(this));
  239 + PCSDK.event.add('app.hide', this.onHide, this); // 等同于wx.onHide(this.onHide.bind(this));
  240 + }
  241 +
  242 + private onShow(opts) {
  243 + // 判断是否是来源于客服会话,上面的openCustomerServiceConversation的success设置的数据状态做判断
  244 + let serviceRewardData = AppDataManager.I.get('service.pay.data');
  245 + if (serviceRewardData && serviceRewardData.status === 1) {
  246 + AppDataManager.I.set('service.pay.data', null);
  247 + // 领取奖励的逻辑,比如每天只能领取一次的记录,防止重复刷奖励
  248 + // 请求后端接口验证奖励合理性
  249 + }
  250 + }
  251 +
  252 + private onHide(){
  253 + // 监听平台的onHide事件
  254 + }
  255 + }
  256 + ```
  257 +<div id="checkUpdate"></div>
  258 +3. **checkUpdate**
110 259
111 ```javascript 260 ```javascript
112 - PCSDK.stat.active(): void 261 + PCSDK.platform.checkUpdate( params?: _ShowModalObject ): void
113 ``` 262 ```
114 263
115 - 定义:用户活跃/新增注册上报,切记在使用setLogind设置用户信息过后调用此接口,不然会导致新增注册数据统计异常 264 + 定义:检测版本是否有更新,如果版本有更新会弹出确认框,参数可不传递,不传递有版本更新会弹出下图的默认确认框;开发者可自定义弹出框的显示样式,参数与[wx.showModal](https://developers.weixin.qq.com/minigame/dev/api/ui/interaction/wx.showModal.html)一模一样。
  265 + 建议此api在游戏的入口调用。
  266 + ![sdk文件目录结构](https://dep.miso-lab.com/sdkword/sdk_029.png "🔍点击查看大图")
116 267
117 参数: 268 参数:
118 269
119 ```javascript 270 ```javascript
120 - 无 271 + params _ShowModalObject 选传 不传递有版本更新会弹出上图样式默认确认框;开发者可自定义弹出框的显示样式,参数参照wx.showModal的参数
  272 + {
  273 + title string 选传 提示的标题,默认为:更新提示
  274 + content string 选传 提示的内容,默认为:新版本已经准备好,是否重启应用?
  275 + showCancel boolean 选传 是否显示取消按钮,默认为:false不显示
  276 + cancelText string 选传 取消按钮的文字,最多4个字符
  277 + cancelColor string 选传 取消按钮的文字颜色,必须是16进制格式的颜色字符串
  278 + confirmText string 选传 确认按钮的文字,最多4个字符
  279 + confirmColor string 选传 确认按钮的文字颜色,必须是16进制格式的颜色字符串
  280 + success function 选传 接口调用成功的回调函数
  281 + fail function 选传 接口调用失败的回调函数
  282 + complete function 选传 接口调用结束的回调函数(调用成功、失败都会执行)
  283 + }
121 ``` 284 ```
122 285
123 - 示例:游戏登录完成后,获取用户信息后进行打点(该示例,只是模拟该接口使用环境) 286 + 示例:在游戏入口类中检测是否有版本更新
124 287
125 ```javascript 288 ```javascript
126 - // 使用场景1:发起登录请求,得到用户数据信息,调用setLogind设置SDK用户信息后立即调用active  
127 - Api.login().then( data => {  
128 - let { user_id, user_reg_time } = data;  
129 - // 设置用户信息  
130 - PCSDK.stat.setLogind({  
131 - userId: data.user_id,  
132 - regTime: data.user_reg_time  
133 - });  
134 - // 用户活跃注册打点  
135 - PCSDK.stat.active();  
136 - });  
137 -  
138 - // 使用场景2:发起登录请求,得到用户数据信息,调用setLogind设置SDK用户信息。在其他界面调用active  
139 - // 资源加载loading界面  
140 - class LoadingScene(){  
141 - constructor(){  
142 - this.login(); 289 + class Main {
  290 + constructor() {
  291 + this.init();
143 } 292 }
144 293
145 - private login(){  
146 - // 登录  
147 - Api.login().then( data => {  
148 - let { user_id, user_reg_time } = data;  
149 - // 设置用户信息  
150 - PCSDK.stat.setLogind({  
151 - userId: data.user_id,  
152 - regTime: data.user_reg_time  
153 - });  
154 - // 进入home主页场景  
155 - SceneManager.I.switchScene(HomeScene);  
156 - });  
157 - }  
158 - }  
159 -  
160 - // Home页面  
161 - class HomeScene(){  
162 - constructor(){  
163 - this.btnStarGame.on('click', this.onGame, this); 294 + private init() {
  295 + this.checkUpdate();
164 } 296 }
165 297
166 - private onGame(){  
167 - // 用户活跃注册打点  
168 - PCSDK.stat.active();  
169 - // 进入游戏页面  
170 - SceneManager.I.switchScene(GameScene); 298 + private checkUpdate() {
  299 + // 调用SDK的checkUpdate,微信版本有更新,会自动弹出更新确认框
  300 + PCSDK.platform.checkUpdate();
  301 +
  302 + // 自定义更新弹出框
  303 + /*
  304 + PCSDK.platform.checkUpdate({
  305 + showCancel: true,
  306 + content: '客官,xxx游戏有更新了!',
  307 + cancelText: '放弃'
  308 + });
  309 + */
171 } 310 }
172 } 311 }
173 312
  313 + ```
  314 +<div id="vibrate"></div>
  315 +4.0 **vibrateShort**
  316 +
  317 + ```javascript
  318 + PCSDK.platform.vibrateShort(): Promise<any>
  319 + ```
  320 +
  321 + 定义:使手机发生较短时间的振动(15 ms)。仅在 iPhone 7 / 7 Plus 以上及 Android 机型生效
  322 +
  323 + 参数:
  324 +
  325 + ```javascript
  326 + 无
  327 + ```
  328 +
  329 + 示例:
  330 +
  331 + ```javascript
  332 + PCSDK.platform.vibrateShort();
  333 +
  334 + ```
  335 +4.1 **vibrateLong**
  336 +
  337 + ```javascript
  338 + PCSDK.platform.vibrateShort(): Promise<any>
  339 + ```
  340 +
  341 + 定义:使手机发生较长时间的振动(400 ms)
  342 +
  343 + 参数:
  344 +
  345 + ```javascript
  346 + 无
  347 + ```
  348 +
  349 + 示例:
  350 +
  351 + ```javascript
  352 + PCSDK.platform.vibrateLong();
  353 +
174 ``` 354 ```
175 \ No newline at end of file 355 \ No newline at end of file
word/噗嗤SDK(PCSDK).xmind
No preview for this file type