mpapi (miniProgram API), um plug-in compatível com API de miniprograma, escrito uma vez e executado em vários terminais.
⏰ Data de atualização: 31/05/2019, as funções do mini programa estão em constante atualização, a nova versão pode ser diferente, preste atenção.
O problema que este projeto resolve : Encontre as diferenças entre as diferentes APIs de miniprogramas e tente usar um conjunto de APIs para ser compatível com vários miniprogramas .
api.showToast
pode passar string
diretamente, api.setStorageSync
não precisa chamar try catch 等
request
, downloadFile
, detailsapi.isWechat
, api.isAlipay
, api.isSwan
, api.isTt
npm install mpapi --save
Método de instalação não-npm, basta introduzir mpapi.js
no diretório lib
diretamente no projeto
const api = require ( 'mpapi' )
api . alert ( { ... } ) . then ( ( res ) => { } )
api . confirm ( { ... } ) . then ( ( res ) => { } )
api . getLocation ( ) . then ( ( res ) => { } )
. . .
request
, downloadFile
, uploadFile
etc.API que pode ser usada por todos os miniprogramas
interação
alert
confirm
showToast
showLoading
showActionSheet
Barra de navegação
setNavigationBarTitle
setNavigationBarColor
documento
saveFile
getFileInfo
getSavedFileInfo
getSavedFileList
removeSavedFile
foto
chooseImage
previewImage
compressImage
saveImageToPhotosAlbum
perguntar
request
uploadFile
downloadFile
Cache de dados
setStorageSync
getStorageSync
clearStorageSync
getStorageInfoSync
removeStorageSync
Equipamento do sistema
getSystemInfoSync
setScreenBrightness
getScreenBrightness
makePhoneCall
scanCode
setClipboardData
getClipboardData
Suportado apenas em miniprogramas específicos
Miniaplicativo WeChat , miniaplicativo Alipay , Miniaplicativo inteligente Baidu , miniaplicativo ByteDance , se houver um ícone, significa que apenas o miniaplicativo correspondente é suportado; se não houver nenhum ícone, significa que todos são suportados.
interação
hideToast
hideLoading
showModal
prompt
esconderijo
getStorage
setStorage
removeStorage
getStorageInfo
roteamento
reLaunch
switchTab
redirectTo
navigateTo
navigateBack
Localização
getLocation
openLocation
chooseLocation
Imagem do arquivo
saveImage
getImageInfo
chooseVideo
chooseMessageFile
saveVideoToPhotosAlbum
openDocument
Áudio
stopVoice
playVoice
getAvailableAudioSources
stopBackgroundAudio
playBackgroundAudio
seekBackgroundAudio
pauseBackgroundAudio
getBackgroundAudioPlayerState
setInnerAudioOption
startRecord
stopRecord
stopRecord
Barra de navegação
getTitleColor
setNavigationBar
showNavigationBarLoading
hideNavigationBarLoading
fundo
setBackgroundTextStyle
setBackgroundColor
showTabBar
hideTabBar
setTabBarItem
setTabBarStyle
showTabBarRedDot
hideTabBarRedDot
setTabBarBadge
removeTabBarBadge
Puxe para baixo para atualizar
startPullDownRefresh
stopPullDownRefresh
rolar
pageScrollTo
sendSocketMessage
connectSocket
closeSocket
startLocalServiceDiscovery
stopLocalServiceDiscovery
fixar no topo
setTopBarText
tela
canvasGetImageData
canvasPutImageData
canvasToTempFilePath
Compartilhe e encaminhe
getShareInfo
updateShareMenu
showShareMenu
hideShareMenu
showFavoriteGuide
openShare
Login, autorização, informações do usuário
login
checkSession
getUserInfo
getAuthCode
getAuthUserInfo
getPhoneNumber
authorize
pagar
tradePay
requestPayment
requestPolymerPayment
interface aberta
getSetting
openSetting
reportAnalytics
chooseInvoiceTitle
navigateToMiniProgram
navigateBackMiniProgram
Interface aberta - miniaplicativo WeChat
addCard
openCard
chooseInvoice
startSoterAuthentication
checkIsSoterEnrolledInDevice
checkIsSupportSoterAuthentication
getWeRunData
Interface aberta - miniaplicativo Alipay
startZMVerify
textRiskIdentification
addCardAuth
getRunScene
chooseCity
datePicker
optionsSelect
multiLevelSelect
rsa
Interface aberta - miniaplicativo inteligente Baidu
getSwanId
navigateToSmartProgram
navigateBackSmartProgram
setPageInfo
setMetaDescription
setMetaKeywords
setDocumentTitle
loadSubPackage
Pessoa de contato
chooseAddress
chooseContact
choosePhoneContact
chooseAlipayContact
addPhoneContact
Carregamento de fonte
loadFontFace
Informações do sistema
getSystemInfo
getBatteryInfo
getNetworkType
setKeepScreenOn
startAccelerometer
stopAccelerometer
startCompass
stopCompass
startDeviceMotionListening
stopDeviceMotionListening
startGyroscope
stopGyroscope
vibrate
vibrateShort
vibrateLong
watchShake
setEnableDebug
getServerTime
scan
bluetooth sem fio
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 terceiros
getExtConfig
API de nível profundo, observação: os métodos são prefixados com $
api.ap
api.ap.$faceVerify
api.ap.$navigateToAlipayPage
...
api.ai
api.ai.$ocrIdCard
api.ai.$ocrBankCard
...
Alguma nova instância do objeto acima da API
createMapContext
createVideoContext
createAudioContext
createCameraContext
createInnerAudioContext
createLivePusherContext
createLivePlayerContext
getBackgroundAudioManager
getRecorderManager
createSelectorQuery
getFileSystemManager
createARCameraContext
Por exemplo: Nota: O método é prefixado com $
let ctx = api . createMapContext ( 'maper' )
ctx . $getCenterLocation ( ) . then ( ( res ) => {
console . log ( 'createMapContext:getCenterLocation' )
console . log ( res )
} )
1. Transmissão de parâmetros inconsistente
Por exemplo: método showLoading
, cópia de exibição carregada, parâmetro title
no WeChat e Baidu e parâmetro content
no Alipay, como segue
// 微信
wx . showLoading ( {
title : '加载中'
} )
// 百度
swan . showLoading ( {
title : '加载中'
} )
// 支付宝
my . showLoading ( {
content : '加载中'
} )
// 使用 mpapi 之后,多端兼容
api . showLoading ( '加载中' )
api . showLoading ( {
title : '提示内容'
} )
2. Os parâmetros de retorno são inconsistentes
Por exemplo: método showActionSheet
, após a execução, obtenha o índice selecionado No WeChat e Baidu, é res.tapIndex
, no Alipay, é res.index
, como segue.
// 微信
wx . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.tapIndex
}
} )
// 支付宝
my . showActionSheet ( {
items : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.index
}
} )
// 使用 mpapi,多端兼容
api . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.tapIndex
}
} )
3. Não suportado, mas compatível
Por exemplo: Alipay tem my.alert
, mas WeChat e Baidu não têm esse método. No entanto, você pode encapsular um método alert
por meio de wx.showModal
do WeChat ou swan.showModal
do Baidu, como segue.
api . alert ( '提示内容' )
api . alert ( {
content : '提示内容'
} )
// 请求数据,兼容多端
api . request ( { ... } ) . then ( ( res ) => { } )
4. Não suportado e incompatível
Algumas APIs são válidas apenas em terminais específicos e não podem ser processadas em compatibilidade, como segue:
// 只在支付宝里面有效,微信和百度小程序里面会报错
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 suporte
Todas as APIs de miniprogramas, desde que incluam retornos de chamada success
, foram encapsuladas com Promise
e podem ser usadas diretamente. Ambos os métodos de escrita são suportados, por exemplo.
// 使用回调
api . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.tapIndex
}
} )
// 或者
api . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ]
} ) . then ( ( res ) => {
// res.tapIndex
} )
// 其它
api . setStorage ( { ... } ) . then ( ( res ) => { } )
api . chooseImage ( { ... } ) . then ( ( res ) => { } )
. . .
2. Os parâmetros passados e retornados no método compatível estão sujeitos à chamada do miniaplicativo WeChat . Os parâmetros incompatíveis com outros terminais não são processados (alguns parâmetros não podem ser processados e não são suportados por miniprogramas específicos. Os desenvolvedores precisam prestar atenção, como).
api . chooseImage ( {
count : 1 ,
sizeType : [ 'original' , 'compressed' ] , // 只在微信可用
sourceType : [ 'album' , 'camera' ] ,
} ) . then ( ( res ) => {
// res.tempFilePaths 在微信和支付宝都可用
// res.tempFiles 只在微信可用
} )
Algumas APIs precisam dar suporte ao Promise e chamar seus eventos, portanto os seguintes métodos podem ser usados:
antes:
const downloadTask = wx . downloadFile ( {
url : 'https://example.com/audio/123' , // 仅为示例,并非真实的资源
success ( res ) {
console . log ( res )
}
} )
downloadTask . onProgressUpdate ( ( res ) => {
console . log ( res )
} )
downloadTask . abort ( ) // 取消下载任务
Depois 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') // 取消下载任务
Outras APIs podem ser tratadas de forma semelhante, como: request
, uploadFile
, connectSocket
Se você encontrar bugs durante o uso ou tiver boas sugestões, sinta-se à vontade para reportá-los.
Registro de alterações