[关闭]
@wwanghee 2016-07-11T08:32:28.000000Z 字数 2770 阅读 671

【腾讯项目】气泡&挂件终端设置接口文档


一、使用方法

1、依赖zepto和mqq

2、引入封装代码

  1. (function(exports) {
  2. exports.util = {
  3. type: type
  4. };
  5. exports.bridge = {
  6. request: request,
  7. register: register
  8. };
  9. var _toString = Object.prototype.toString;
  10. function type(obj) {
  11. return obj === null ? "null" : obj === undefined ? "undefined" : _toString.call(obj).slice(8, -1).toLowerCase();
  12. }
  13. function request(ns, methodName, data, callback, deleteOnExec, execOnNewThread) {
  14. var _json, _callbackName = '',
  15. _arguments = [ns, methodName];
  16. // 获取参数对象
  17. if (exports.util.type(data) === 'object') {
  18. _json = JSON.stringify(data);
  19. _json = JSON.parse(_json);
  20. } else if (exports.util.type(data) === 'function') {
  21. callback = data;
  22. deleteOnExec = callback;
  23. execOnNewThread = deleteOnExec;
  24. }
  25. // 若有回调函数,就获取回调函数名称
  26. if (exports.util.type(callback) === 'function') {
  27. if (exports.util.type(deleteOnExec) === 'boolean' && exports.util.type(execOnNewThread) === 'boolean') {
  28. _callbackName = mqq.callback(callback, deleteOnExec, execOnNewThread)
  29. } else {
  30. _callbackName = mqq.callback(callback);
  31. }
  32. _json = _json || {};
  33. _json.callback = _callbackName;
  34. }
  35. _json && _arguments.push(_json);
  36. /**
  37. * 1、request(ns, methodName) 不处理,直接调用 invoke
  38. * 2、request(ns, methodName, data) 不处理,直接调用 invoke
  39. * 3、request(ns, methodName, callback) 创建 data,并生成 callbackName,修改 arguments 后调用 invoke
  40. * 4、request(ns, methodName, callback, deleteOnExec, execOnNewThread) 创建 data,并生成 callbackName,修改 arguments 后调用 invoke
  41. * 5、request(ns, methodName, data, callback) 处理 data,并生成 callbackName,修改 arguments 后调用 invoke
  42. * 6、request(ns, methodName, data, callback, deleteOnExec, execOnNewThread) 处理 data,并生成 callbackName,修改 arguments 后调用 invoke
  43. */
  44. mqq.invoke.apply(mqq, _arguments);
  45. }
  46. function register(snAndModuleAndMethod, fn, iOSVersion, androidVersion) {
  47. if (exports.util.type(snAndModuleAndMethod) !== 'string') {
  48. throw new TypeError('参数类型错误:snAndModuleAndMethod 参数必须为字符串类型!');
  49. }
  50. var _buildObj;
  51. // 接口不支持 iOS
  52. if (iOSVersion === 'no') {
  53. _buildObj = {
  54. android: fn,
  55. support: {
  56. android: androidVersion
  57. }
  58. }
  59. }
  60. // 接口不支持 android
  61. else if (androidVersion === 'no') {
  62. _buildObj = {
  63. iOS: fn,
  64. support: {
  65. iOS: iOSVersion
  66. }
  67. }
  68. }
  69. // 都支持
  70. else {
  71. _buildObj = {
  72. iOS: fn,
  73. android: fn,
  74. support: {
  75. iOS: iOSVersion,
  76. android: exports.util.type(androidVersion) === 'undefined' ? iOSVersion : androidVersion // 两个平台支持的版本相同时,androidVersion 可能是 undefined
  77. }
  78. }
  79. }
  80. mqq.build(snAndModuleAndMethod, _buildObj);
  81. }
  82. function updateFaceAddon(params, callback) {
  83. qw.bridge.request('faceAddon', 'updateFaceAddon', params, callback);
  84. }
  85. function bubbleSetup(params, callback) {
  86. qw.bridge.request('bubble', 'setup', params, callback);
  87. }
  88. exports.bridge.register('qw.faceAddon.updateFaceAddon', updateFaceAddon, '4.7.0');
  89. exports.bridge.register('qw.bubble.setup', bubbleSetup, '4.6.0');
  90. })(window.qw || (window.qw = {}));

3、调用代码

  1. //终端设置气泡接口
  2. qw.bubble.setup({
  3. id: 60 //气泡ID
  4. }, function(data) {
  5. if(data && data.code == 0){
  6. //成功回调
  7. alert('设置气泡成功!');
  8. }
  9. });
  10. //终端设置挂件接口
  11. qw.faceAddon.updateFaceAddon({
  12. id: 4 //挂件ID
  13. }, function(data) {
  14. if(data && data.code == 0){
  15. //成功回调
  16. alert('设置挂件成功!');
  17. }
  18. });

二、示例DEMO

URL:

http://imgcache.qq.com/club/themes/mobile/test/setup.html

二维码:

QQ20151221-0@2x.png-16.5kB

源代码:

setup.html4.4kB

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注