mpapi (miniProgram API), un complemento compatible con miniprograma API, escrito una vez y ejecutado en múltiples terminales.
⏰ Fecha de actualización: 2019-05-31, las funciones del mini programa se actualizan constantemente, la nueva versión puede ser diferente, preste atención.
El problema que resuelve este proyecto : encuentre las diferencias entre diferentes mini API de programas e intente utilizar un conjunto de API para que sean compatibles con múltiples mini programas .
api.showToast
puede pasar string
directamente, api.setStorageSync
no necesita llamar try catch 等
request
, downloadFile
, detallesapi.isWechat
, api.isAlipay
, api.isSwan
, api.isTt
npm install mpapi --save
Método de instalación que no es npm, simplemente introduzca mpapi.js
en el directorio lib
directamente en el proyecto
const api = require ( 'mpapi' )
api . alert ( { ... } ) . then ( ( res ) => { } )
api . confirm ( { ... } ) . then ( ( res ) => { } )
api . getLocation ( ) . then ( ( res ) => { } )
. . .
request
, downloadFile
, uploadFile
etc.API que puede ser utilizada por todos los mini programas.
interacción
alert
confirm
showToast
showLoading
showActionSheet
barra de navegación
setNavigationBarTitle
setNavigationBarColor
documento
saveFile
getFileInfo
getSavedFileInfo
getSavedFileList
removeSavedFile
imagen
chooseImage
previewImage
compressImage
saveImageToPhotosAlbum
preguntar
request
uploadFile
downloadFile
caché de datos
setStorageSync
getStorageSync
clearStorageSync
getStorageInfoSync
removeStorageSync
Equipo del sistema
getSystemInfoSync
setScreenBrightness
getScreenBrightness
makePhoneCall
scanCode
setClipboardData
getClipboardData
Solo es compatible con miniprogramas específicos
subprograma WeChat , subprograma Alipay , subprograma inteligente de Baidu , subprograma ByteDance , si hay un ícono, significa que solo se admite el subprograma correspondiente, si no hay ningún ícono, significa que todos son compatibles.
interacción
hideToast
hideLoading
showModal
prompt
cache
getStorage
setStorage
removeStorage
getStorageInfo
enrutamiento
reLaunch
switchTab
redirectTo
navigateTo
navigateBack
Ubicación
getLocation
openLocation
chooseLocation
Imagen de archivo
saveImage
getImageInfo
chooseVideo
chooseMessageFile
saveVideoToPhotosAlbum
openDocument
Audio
stopVoice
playVoice
getAvailableAudioSources
stopBackgroundAudio
playBackgroundAudio
seekBackgroundAudio
pauseBackgroundAudio
getBackgroundAudioPlayerState
setInnerAudioOption
startRecord
stopRecord
stopRecord
barra de navegación
getTitleColor
setNavigationBar
showNavigationBarLoading
hideNavigationBarLoading
fondo
setBackgroundTextStyle
setBackgroundColor
showTabBar
hideTabBar
setTabBarItem
setTabBarStyle
showTabBarRedDot
hideTabBarRedDot
setTabBarBadge
removeTabBarBadge
Tira hacia abajo para actualizar
startPullDownRefresh
stopPullDownRefresh
voluta
pageScrollTo
sendSocketMessage
connectSocket
closeSocket
startLocalServiceDiscovery
stopLocalServiceDiscovery
fijar hacia arriba
setTopBarText
lienzo
canvasGetImageData
canvasPutImageData
canvasToTempFilePath
Compartir y reenviar
getShareInfo
updateShareMenu
showShareMenu
hideShareMenu
showFavoriteGuide
openShare
Inicio de sesión, autorización, información de usuario.
login
checkSession
getUserInfo
getAuthCode
getAuthUserInfo
getPhoneNumber
authorize
pagar
tradePay
requestPayment
requestPolymerPayment
interfaz abierta
getSetting
openSetting
reportAnalytics
chooseInvoiceTitle
navigateToMiniProgram
navigateBackMiniProgram
Interfaz abierta: subprograma WeChat
addCard
openCard
chooseInvoice
startSoterAuthentication
checkIsSoterEnrolledInDevice
checkIsSupportSoterAuthentication
getWeRunData
Interfaz abierta: subprograma Alipay
startZMVerify
textRiskIdentification
addCardAuth
getRunScene
chooseCity
datePicker
optionsSelect
multiLevelSelect
rsa
Interfaz abierta: subprograma inteligente de Baidu
getSwanId
navigateToSmartProgram
navigateBackSmartProgram
setPageInfo
setMetaDescription
setMetaKeywords
setDocumentTitle
loadSubPackage
Persona de contacto
chooseAddress
chooseContact
choosePhoneContact
chooseAlipayContact
addPhoneContact
Carga de fuentes
loadFontFace
Información del sistema
getSystemInfo
getBatteryInfo
getNetworkType
setKeepScreenOn
startAccelerometer
stopAccelerometer
startCompass
stopCompass
startDeviceMotionListening
stopDeviceMotionListening
startGyroscope
stopGyroscope
vibrate
vibrateShort
vibrateLong
watchShake
setEnableDebug
getServerTime
scan
bluetooth inalámbrico
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
Plataforma de terceros
getExtConfig
API de nivel profundo, nota: los métodos tienen el prefijo $
api.ap
api.ap.$faceVerify
api.ap.$navigateToAlipayPage
...
api.ai
api.ai.$ocrIdCard
api.ai.$ocrBankCard
...
Alguna nueva instancia del objeto encima de la API.
createMapContext
createVideoContext
createAudioContext
createCameraContext
createInnerAudioContext
createLivePusherContext
createLivePlayerContext
getBackgroundAudioManager
getRecorderManager
createSelectorQuery
getFileSystemManager
createARCameraContext
Por ejemplo: Nota: El método tiene el prefijo $
let ctx = api . createMapContext ( 'maper' )
ctx . $getCenterLocation ( ) . then ( ( res ) => {
console . log ( 'createMapContext:getCenterLocation' )
console . log ( res )
} )
1. Transmisión de parámetros inconsistente
Por ejemplo: método showLoading
, copia de visualización cargada, parámetro title
en WeChat y Baidu y parámetro content
en Alipay, de la siguiente manera
// 微信
wx . showLoading ( {
title : '加载中'
} )
// 百度
swan . showLoading ( {
title : '加载中'
} )
// 支付宝
my . showLoading ( {
content : '加载中'
} )
// 使用 mpapi 之后,多端兼容
api . showLoading ( '加载中' )
api . showLoading ( {
title : '提示内容'
} )
2. Los parámetros de retorno son inconsistentes
Por ejemplo: método showActionSheet
, después de la ejecución, obtiene el índice seleccionado. En WeChat y Baidu, es res.tapIndex
, en Alipay, es res.index
, de la siguiente manera.
// 微信
wx . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.tapIndex
}
} )
// 支付宝
my . showActionSheet ( {
items : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.index
}
} )
// 使用 mpapi,多端兼容
api . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.tapIndex
}
} )
3. No compatible, pero compatible
Por ejemplo: Alipay tiene my.alert
, pero WeChat y Baidu no tienen este método. Sin embargo, puede encapsular un método alert
a través de wx.showModal
de WeChat o swan.showModal
de Baidu, de la siguiente manera.
api . alert ( '提示内容' )
api . alert ( {
content : '提示内容'
} )
// 请求数据,兼容多端
api . request ( { ... } ) . then ( ( res ) => { } )
4. No compatible e incompatible
Algunas API solo son válidas en terminales específicos y no se pueden procesar en compatibilidad, de la siguiente manera:
// 只在支付宝里面有效,微信和百度小程序里面会报错
api . startZMVerify ( { ... } )
// 建议这样处理
if ( api . isAlipay ) {
api . startZMVerify ( { ... } )
}
// 只在微信里面有效,支付宝或百度小程序里面会报错
api . setTopBarText ( { ... } )
// 建议这样处理
if ( api . isWechat ) {
api . setTopBarText ( { ... } )
}
// 百度智能小程序的特殊 API 一样的道理
if ( api . isSwan ) {
api . getSwanId ( ) . then ( ( res ) => { } )
}
1. Estilo Promise
de soporte
Todas las API de mini programas, siempre que incluyan devoluciones de llamadas success
, se han encapsulado con Promise
y se pueden usar directamente. Se admiten ambos métodos de escritura, por ejemplo.
// 使用回调
api . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.tapIndex
}
} )
// 或者
api . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ]
} ) . then ( ( res ) => {
// res.tapIndex
} )
// 其它
api . setStorage ( { ... } ) . then ( ( res ) => { } )
api . chooseImage ( { ... } ) . then ( ( res ) => { } )
. . .
2. Los parámetros pasados y devueltos en el método compatible están sujetos a la llamada del subprograma WeChat . Los parámetros que son incompatibles con otros terminales no se procesan (algunos parámetros no se pueden procesar y no son compatibles con miniprogramas específicos. Los desarrolladores deben prestar atención, como por ejemplo).
api . chooseImage ( {
count : 1 ,
sizeType : [ 'original' , 'compressed' ] , // 只在微信可用
sourceType : [ 'album' , 'camera' ] ,
} ) . then ( ( res ) => {
// res.tempFilePaths 在微信和支付宝都可用
// res.tempFiles 只在微信可用
} )
Algunas API necesitan admitir Promise y llamar a sus eventos, por lo que se pueden utilizar los siguientes métodos:
antes:
const downloadTask = wx . downloadFile ( {
url : 'https://example.com/audio/123' , // 仅为示例,并非真实的资源
success ( res ) {
console . log ( res )
}
} )
downloadTask . onProgressUpdate ( ( res ) => {
console . log ( res )
} )
downloadTask . abort ( ) // 取消下载任务
Después de usar 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') // 取消下载任务
Otras API se pueden manejar de manera similar, como: request
, uploadFile
, connectSocket
Si encuentra errores durante el uso o tiene buenas sugerencias, no dude en informarlos.
Registro de cambios