mpapi (miniProgram API), плагин, совместимый с API мини-программ, написанный один раз и запускаемый на нескольких терминалах.
⏰ Дата обновления: 31 мая 2019 г., функции мини-программы постоянно обновляются, новая версия может отличаться, обратите внимание.
Проблема, которую решает этот проект : найти различия между различными API-интерфейсами мини-программ и попытаться использовать набор API-интерфейсов, совместимых с несколькими мини-программами .
api.showToast
может передавать string
напрямую, api.setStorageSync
не требует вызова try catch 等
request
, downloadFile
, Details.api.isWechat
, api.isAlipay
, api.isSwan
, api.isTt
npm install mpapi --save
Метод установки, отличный от npm, просто добавьте mpapi.js
в каталог lib
непосредственно в проект.
const api = require ( 'mpapi' )
api . alert ( { ... } ) . then ( ( res ) => { } )
api . confirm ( { ... } ) . then ( ( res ) => { } )
api . getLocation ( ) . then ( ( res ) => { } )
. . .
request
, downloadFile
, uploadFile
и т. д.API, который может использоваться всеми мини-программами
взаимодействие
alert
confirm
showToast
showLoading
showActionSheet
Панель навигации
setNavigationBarTitle
setNavigationBarColor
документ
saveFile
getFileInfo
getSavedFileInfo
getSavedFileList
removeSavedFile
картина
chooseImage
previewImage
compressImage
saveImageToPhotosAlbum
просить
request
uploadFile
downloadFile
Кэш данных
setStorageSync
getStorageSync
clearStorageSync
getStorageInfoSync
removeStorageSync
Системное оборудование
getSystemInfoSync
setScreenBrightness
getScreenBrightness
makePhoneCall
scanCode
setClipboardData
getClipboardData
Поддерживается только в определенных мини-программах
Апплет WeChat , приложение Alipay , умное приложение Baidu , апплет ByteDance , если значок есть, значит поддерживается только соответствующий апплет, если значка нет, значит поддерживаются все.
взаимодействие
hideToast
hideLoading
showModal
prompt
кэш
getStorage
setStorage
removeStorage
getStorageInfo
маршрутизация
reLaunch
switchTab
redirectTo
navigateTo
navigateBack
Расположение
getLocation
openLocation
chooseLocation
Изображение файла
saveImage
getImageInfo
chooseVideo
chooseMessageFile
saveVideoToPhotosAlbum
openDocument
Аудио
stopVoice
playVoice
getAvailableAudioSources
stopBackgroundAudio
playBackgroundAudio
seekBackgroundAudio
pauseBackgroundAudio
getBackgroundAudioPlayerState
setInnerAudioOption
startRecord
stopRecord
stopRecord
Панель навигации
getTitleColor
setNavigationBar
showNavigationBarLoading
hideNavigationBarLoading
фон
setBackgroundTextStyle
setBackgroundColor
showTabBar
hideTabBar
setTabBarItem
setTabBarStyle
showTabBarRedDot
hideTabBarRedDot
setTabBarBadge
removeTabBarBadge
Потяните вниз, чтобы обновить
startPullDownRefresh
stopPullDownRefresh
прокрутка
pageScrollTo
sendSocketMessage
connectSocket
closeSocket
startLocalServiceDiscovery
stopLocalServiceDiscovery
прикрепить сверху
setTopBarText
холст
canvasGetImageData
canvasPutImageData
canvasToTempFilePath
Поделиться и переслать
getShareInfo
updateShareMenu
showShareMenu
hideShareMenu
showFavoriteGuide
openShare
Вход, авторизация, информация о пользователе
login
checkSession
getUserInfo
getAuthCode
getAuthUserInfo
getPhoneNumber
authorize
платить
tradePay
requestPayment
requestPolymerPayment
открытый интерфейс
getSetting
openSetting
reportAnalytics
chooseInvoiceTitle
navigateToMiniProgram
navigateBackMiniProgram
Открытый интерфейс — апплет WeChat
addCard
openCard
chooseInvoice
startSoterAuthentication
checkIsSoterEnrolledInDevice
checkIsSupportSoterAuthentication
getWeRunData
Открытый интерфейс — апплет Alipay
startZMVerify
textRiskIdentification
addCardAuth
getRunScene
chooseCity
datePicker
optionsSelect
multiLevelSelect
rsa
Открытый интерфейс — умный апплет Baidu
getSwanId
navigateToSmartProgram
navigateBackSmartProgram
setPageInfo
setMetaDescription
setMetaKeywords
setDocumentTitle
loadSubPackage
Контактное лицо
chooseAddress
chooseContact
choosePhoneContact
chooseAlipayContact
addPhoneContact
Загрузка шрифта
loadFontFace
Информация о системе
getSystemInfo
getBatteryInfo
getNetworkType
setKeepScreenOn
startAccelerometer
stopAccelerometer
startCompass
stopCompass
startDeviceMotionListening
stopDeviceMotionListening
startGyroscope
stopGyroscope
vibrate
vibrateShort
vibrateLong
watchShake
setEnableDebug
getServerTime
scan
Bluetooth беспроводной
getBeacons
startBeaconDiscovery
stopBeaconDiscovery
startWifi
stopWifi
setWifiList
getWifiList
connectWifi
getConnectedWifi
getBLEDeviceServices
getBLEDeviceCharacteristics
createBLEConnection
closeBLEConnection
writeBLECharacteristicValue
readBLECharacteristicValue
notifyBLECharacteristicValueChange
startBluetoothDevicesDiscovery
stopBluetoothDevicesDiscovery
openBluetoothAdapter
getConnectedBluetoothDevices
getBluetoothDevices
getBluetoothAdapterState
closeBluetoothAdapter
stopHCE
startHCE
getHCEState
sendHCEMessage
Сторонняя платформа
getExtConfig
API глубокого уровня, обратите внимание: методы имеют префикс $
api.ap
api.ap.$faceVerify
api.ap.$navigateToAlipayPage
...
api.ai
api.ai.$ocrIdCard
api.ai.$ocrBankCard
...
Какой-то новый экземпляр объекта над API
createMapContext
createVideoContext
createAudioContext
createCameraContext
createInnerAudioContext
createLivePusherContext
createLivePlayerContext
getBackgroundAudioManager
getRecorderManager
createSelectorQuery
getFileSystemManager
createARCameraContext
Например: Примечание. Метод имеет префикс $
let ctx = api . createMapContext ( 'maper' )
ctx . $getCenterLocation ( ) . then ( ( res ) => {
console . log ( 'createMapContext:getCenterLocation' )
console . log ( res )
} )
1. Несогласованная передача параметров.
Например: метод showLoading
, загруженная отображаемая копия, параметр title
в WeChat и Baidu и параметр content
в Alipay, как показано ниже.
// 微信
wx . showLoading ( {
title : '加载中'
} )
// 百度
swan . showLoading ( {
title : '加载中'
} )
// 支付宝
my . showLoading ( {
content : '加载中'
} )
// 使用 mpapi 之后,多端兼容
api . showLoading ( '加载中' )
api . showLoading ( {
title : '提示内容'
} )
2. Возвращаемые параметры несовместимы.
Например: метод showActionSheet
после выполнения получает выбранный индекс. В WeChat и Baidu это res.tapIndex
, в Alipay — res.index
, как показано ниже.
// 微信
wx . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.tapIndex
}
} )
// 支付宝
my . showActionSheet ( {
items : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.index
}
} )
// 使用 mpapi,多端兼容
api . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.tapIndex
}
} )
3. Не поддерживается, но совместим
Например: у Alipay есть my.alert
, но у WeChat и Baidu этого метода нет. Однако вы можете инкапсулировать метод alert
через wx.showModal
от WeChat или swan.showModal
от Baidu, как показано ниже.
api . alert ( '提示内容' )
api . alert ( {
content : '提示内容'
} )
// 请求数据,兼容多端
api . request ( { ... } ) . then ( ( res ) => { } )
4. Не поддерживается и несовместимо.
Некоторые API действительны только в определенных терминалах и не могут быть обработаны в режиме совместимости, например:
// 只在支付宝里面有效,微信和百度小程序里面会报错
api . startZMVerify ( { ... } )
// 建议这样处理
if ( api . isAlipay ) {
api . startZMVerify ( { ... } )
}
// 只在微信里面有效,支付宝或百度小程序里面会报错
api . setTopBarText ( { ... } )
// 建议这样处理
if ( api . isWechat ) {
api . setTopBarText ( { ... } )
}
// 百度智能小程序的特殊 API 一样的道理
if ( api . isSwan ) {
api . getSwanId ( ) . then ( ( res ) => { } )
}
1. Поддержка стиля Promise
Все API-интерфейсы мини-программ, если они включают обратные вызовы success
, инкапсулированы с помощью Promise
и могут использоваться напрямую, например, поддерживаются оба метода записи.
// 使用回调
api . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.tapIndex
}
} )
// 或者
api . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ]
} ) . then ( ( res ) => {
// res.tapIndex
} )
// 其它
api . setStorage ( { ... } ) . then ( ( res ) => { } )
api . chooseImage ( { ... } ) . then ( ( res ) => { } )
. . .
2. Параметры, передаваемые и возвращаемые в совместимом методе , подлежат вызову апплета WeChat . Параметры, несовместимые с другими терминалами, не обрабатываются (некоторые параметры не могут быть обработаны и не поддерживаются конкретными мини-программами, на которые следует обратить внимание разработчикам, например).
api . chooseImage ( {
count : 1 ,
sizeType : [ 'original' , 'compressed' ] , // 只在微信可用
sourceType : [ 'album' , 'camera' ] ,
} ) . then ( ( res ) => {
// res.tempFilePaths 在微信和支付宝都可用
// res.tempFiles 只在微信可用
} )
Некоторым API необходимо поддерживать Promise и вызывать его события, поэтому можно использовать следующие методы:
до:
const downloadTask = wx . downloadFile ( {
url : 'https://example.com/audio/123' , // 仅为示例,并非真实的资源
success ( res ) {
console . log ( res )
}
} )
downloadTask . onProgressUpdate ( ( res ) => {
console . log ( res )
} )
downloadTask . abort ( ) // 取消下载任务
После использования mpapi
:
const api = require ( 'mpapi' )
const downloadTask = api . downloadFile ( {
url : 'https://example.com/audio/123' // 仅为示例,并非真实的资源
} ) . then ( ( res ) => {
console . log ( 'success' )
console . log ( res )
} )
downloadTask . $event ( 'onProgressUpdate' , ( res ) => {
console . log ( res )
} )
// downloadTask.$event('abort') // 取消下载任务
Другие API могут обрабатываться аналогичным образом, например: request
, uploadFile
, connectSocket
Если вы обнаружите ошибки во время использования или у вас есть хорошие предложения, пожалуйста, сообщите о них.
Журнал изменений