diff --git a/src/core/runtime/index.js b/src/core/runtime/index.js index 8a4538ed5b1908d958d66d5ba6ed62283a3c811d..9e7304fc69aff1cff7f7fc667f6e4af649622317 100644 --- a/src/core/runtime/index.js +++ b/src/core/runtime/index.js @@ -18,7 +18,18 @@ import * as extraApi from './extra' import * as api from 'uni-platform/service/api/index.js' -import protocols from 'uni-platform/service/api/protocols' +import { protocols, todos, canIUses } from 'uni-platform/service/api/protocols' + +todos.forEach(todoApi => { + protocols[todoApi] = false +}) + +canIUses.forEach(canIUseApi => { + const apiName = protocols[canIUseApi] && protocols[canIUseApi].name ? protocols[canIUseApi].name : canIUseApi + if (!__GLOBAL__.canIUse(apiName)) { + protocols[canIUseApi] = false + } +}) let uni = {} diff --git a/src/core/runtime/wrapper.js b/src/core/runtime/wrapper.js index f6a3e7e214fbccadaf75e147c9c625b5c80374b5..f04beb6d6005c1eacacc0b3bdf254b2977859905 100644 --- a/src/core/runtime/wrapper.js +++ b/src/core/runtime/wrapper.js @@ -10,7 +10,7 @@ import { isContextApi } from '../helpers/promise' -import protocols from 'uni-platform/service/api/protocols' +import { protocols } from 'uni-platform/service/api/protocols' const CALLBACKS = ['success', 'fail', 'cancel', 'complete'] diff --git a/src/platforms/app-plus/service/api/protocols.js b/src/platforms/app-plus/service/api/protocols.js index b1c6ea436a540020ff61f01dea449d5b39367b27..93855999bfb1dc2cd64ca3cfd3b75bd78e9e942d 100644 --- a/src/platforms/app-plus/service/api/protocols.js +++ b/src/platforms/app-plus/service/api/protocols.js @@ -1 +1,3 @@ -export default {} +export const protocols = {} +export const todos = [] +export const canIUses = [] diff --git a/src/platforms/mp-alipay/service/api/protocols.js b/src/platforms/mp-alipay/service/api/protocols.js index a09d39638f207096cf2f65557a622a6a93e2f9d5..56a11dc838e65bf80f8b51e243cad1767c34b7b5 100644 --- a/src/platforms/mp-alipay/service/api/protocols.js +++ b/src/platforms/mp-alipay/service/api/protocols.js @@ -1,5 +1,5 @@ // 不支持的 API 列表 -const TODOS = [ +const todos = [ 'saveImageToPhotosAlbum', 'getRecorderManager', 'getBackgroundAudioManager', @@ -24,7 +24,6 @@ const TODOS = [ 'hideTabBarRedDot', 'setBackgroundColor', 'setBackgroundTextStyle', - 'startPullDownRefresh', 'createIntersectionObserver', 'authorize', 'openSetting', @@ -45,6 +44,11 @@ const TODOS = [ 'offWindowResize' ] +// 存在兼容性的 API 列表 +const canIUses = [ + 'startPullDownRefresh' +] + function _handleNetworkInfo (result) { switch (result.networkType) { case 'NOTREACHABLE': @@ -359,8 +363,8 @@ const protocols = { // 需要做转换的 API 列表 } } -TODOS.forEach(todoApi => { - protocols[todoApi] = false -}) - -export default protocols +export { + protocols, + todos, + canIUses +} diff --git a/src/platforms/mp-baidu/service/api/protocols.js b/src/platforms/mp-baidu/service/api/protocols.js index 4bdc421b665da91d1fe1d3b24dc1db384f2b21fd..1bb1bd35dda13eedd3bf5c494e474d38099b8d56 100644 --- a/src/platforms/mp-baidu/service/api/protocols.js +++ b/src/platforms/mp-baidu/service/api/protocols.js @@ -1,5 +1,5 @@ // 不支持的 API 列表 -const TODOS = [ +const todos = [ 'hideKeyboard', 'onGyroscopeChange', 'startGyroscope', @@ -32,6 +32,9 @@ const TODOS = [ 'offWindowResize' ] +// 存在兼容性的 API 列表 +const canIUses = [] + function createTodoMethod (contextName, methodName) { return function unsupported () { console.error(`__PLATFORM_TITLE__ ${contextName}暂不支持${methodName}`) @@ -93,8 +96,8 @@ const protocols = { } } -TODOS.forEach(todoApi => { - protocols[todoApi] = false -}) - -export default protocols +export { + protocols, + todos, + canIUses +} diff --git a/src/platforms/mp-toutiao/service/api/protocols.js b/src/platforms/mp-toutiao/service/api/protocols.js index a830d52bb2c11a286e449ab0eed50a4d5838dee0..0f99ee949ff99fea3a57304d72cc95a4a3635995 100644 --- a/src/platforms/mp-toutiao/service/api/protocols.js +++ b/src/platforms/mp-toutiao/service/api/protocols.js @@ -1,5 +1,5 @@ // 不支持的 API 列表 -const TODOS = [ +const todos = [ 'hideKeyboard', 'onSocketOpen', 'onSocketError', @@ -81,6 +81,9 @@ const TODOS = [ 'offWindowResize' ] +// 存在兼容性的 API 列表 +const canIUses = [] + // 需要做转换的 API 列表 const protocols = { chooseImage: { @@ -154,8 +157,8 @@ const protocols = { } } -TODOS.forEach(todoApi => { - protocols[todoApi] = false -}) - -export default protocols +export { + protocols, + todos, + canIUses +} diff --git a/src/platforms/mp-weixin/service/api/protocols.js b/src/platforms/mp-weixin/service/api/protocols.js index b1c6ea436a540020ff61f01dea449d5b39367b27..93855999bfb1dc2cd64ca3cfd3b75bd78e9e942d 100644 --- a/src/platforms/mp-weixin/service/api/protocols.js +++ b/src/platforms/mp-weixin/service/api/protocols.js @@ -1 +1,3 @@ -export default {} +export const protocols = {} +export const todos = [] +export const canIUses = []