mpapi (miniProgram API), un plug-in compatible avec l'API de mini-programme, écrit une seule fois et exécuté sur plusieurs terminaux.
⏰ Date de mise à jour : 31/05/2019, les fonctions du mini-programme sont constamment mises à jour, la nouvelle version peut être différente, veuillez faire attention.
Le problème que ce projet résout : trouvez les différences entre les différentes API de mini-programmes et essayez d'utiliser un ensemble d'API pour être compatible avec plusieurs mini-programmes .
api.showToast
peut transmettre string
directement, api.setStorageSync
n'a pas besoin d'appeler try catch 等
request
, downloadFile
, détailsapi.isWechat
, api.isAlipay
, api.isSwan
, api.isTt
npm install mpapi --save
Méthode d'installation non npm, introduisez simplement mpapi.js
dans le répertoire lib
directement dans le projet
const api = require ( 'mpapi' )
api . alert ( { ... } ) . then ( ( res ) => { } )
api . confirm ( { ... } ) . then ( ( res ) => { } )
api . getLocation ( ) . then ( ( res ) => { } )
. . .
request
, downloadFile
, uploadFile
etc.API pouvant être utilisée par tous les mini-programmes
interaction
alert
confirm
showToast
showLoading
showActionSheet
Barre de navigation
setNavigationBarTitle
setNavigationBarColor
document
saveFile
getFileInfo
getSavedFileInfo
getSavedFileList
removeSavedFile
image
chooseImage
previewImage
compressImage
saveImageToPhotosAlbum
demander
request
uploadFile
downloadFile
Cache de données
setStorageSync
getStorageSync
clearStorageSync
getStorageInfoSync
removeStorageSync
Équipement système
getSystemInfoSync
setScreenBrightness
getScreenBrightness
makePhoneCall
scanCode
setClipboardData
getClipboardData
Uniquement pris en charge dans le cadre de mini-programmes spécifiques
Applet WeChat , Applet Alipay , Applet intelligent Baidu , Applet ByteDance , s'il y a une icône, cela signifie que seule l'applet correspondante est prise en charge, s'il n'y a pas d'icône, cela signifie que toutes sont prises en charge.
interaction
hideToast
hideLoading
showModal
prompt
cache
getStorage
setStorage
removeStorage
getStorageInfo
routage
reLaunch
switchTab
redirectTo
navigateTo
navigateBack
Emplacement
getLocation
openLocation
chooseLocation
Image du fichier
saveImage
getImageInfo
chooseVideo
chooseMessageFile
saveVideoToPhotosAlbum
openDocument
Audio
stopVoice
playVoice
getAvailableAudioSources
stopBackgroundAudio
playBackgroundAudio
seekBackgroundAudio
pauseBackgroundAudio
getBackgroundAudioPlayerState
setInnerAudioOption
startRecord
stopRecord
stopRecord
Barre de navigation
getTitleColor
setNavigationBar
showNavigationBarLoading
hideNavigationBarLoading
arrière-plan
setBackgroundTextStyle
setBackgroundColor
showTabBar
hideTabBar
setTabBarItem
setTabBarStyle
showTabBarRedDot
hideTabBarRedDot
setTabBarBadge
removeTabBarBadge
Déroulez pour actualiser
startPullDownRefresh
stopPullDownRefresh
rouleau
pageScrollTo
sendSocketMessage
connectSocket
closeSocket
startLocalServiceDiscovery
stopLocalServiceDiscovery
épingler en haut
setTopBarText
toile
canvasGetImageData
canvasPutImageData
canvasToTempFilePath
Partager et transférer
getShareInfo
updateShareMenu
showShareMenu
hideShareMenu
showFavoriteGuide
openShare
Connexion, autorisation, informations utilisateur
login
checkSession
getUserInfo
getAuthCode
getAuthUserInfo
getPhoneNumber
authorize
payer
tradePay
requestPayment
requestPolymerPayment
interface ouverte
getSetting
openSetting
reportAnalytics
chooseInvoiceTitle
navigateToMiniProgram
navigateBackMiniProgram
Interface ouverte - Applet WeChat
addCard
openCard
chooseInvoice
startSoterAuthentication
checkIsSoterEnrolledInDevice
checkIsSupportSoterAuthentication
getWeRunData
Interface ouverte - Applet Alipay
startZMVerify
textRiskIdentification
addCardAuth
getRunScene
chooseCity
datePicker
optionsSelect
multiLevelSelect
rsa
Interface ouverte - Applet intelligent Baidu
getSwanId
navigateToSmartProgram
navigateBackSmartProgram
setPageInfo
setMetaDescription
setMetaKeywords
setDocumentTitle
loadSubPackage
Personne de contact
chooseAddress
chooseContact
choosePhoneContact
chooseAlipayContact
addPhoneContact
Chargement des polices
loadFontFace
Informations système
getSystemInfo
getBatteryInfo
getNetworkType
setKeepScreenOn
startAccelerometer
stopAccelerometer
startCompass
stopCompass
startDeviceMotionListening
stopDeviceMotionListening
startGyroscope
stopGyroscope
vibrate
vibrateShort
vibrateLong
watchShake
setEnableDebug
getServerTime
scan
Bluetooth sans fil
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
Plateforme tierce
getExtConfig
API de niveau approfondi, remarque : les méthodes sont préfixées par $
api.ap
api.ap.$faceVerify
api.ap.$navigateToAlipayPage
...
api.ai
api.ai.$ocrIdCard
api.ai.$ocrBankCard
...
Une nouvelle instance de l'objet au-dessus de l'API
createMapContext
createVideoContext
createAudioContext
createCameraContext
createInnerAudioContext
createLivePusherContext
createLivePlayerContext
getBackgroundAudioManager
getRecorderManager
createSelectorQuery
getFileSystemManager
createARCameraContext
Par exemple : Remarque : La méthode est préfixée par $
let ctx = api . createMapContext ( 'maper' )
ctx . $getCenterLocation ( ) . then ( ( res ) => {
console . log ( 'createMapContext:getCenterLocation' )
console . log ( res )
} )
1. Transmission de paramètres incohérente
Par exemple : la méthode showLoading
, la copie d'affichage chargée, title
dans WeChat et Baidu et le paramètre content
dans Alipay, comme suit
// 微信
wx . showLoading ( {
title : '加载中'
} )
// 百度
swan . showLoading ( {
title : '加载中'
} )
// 支付宝
my . showLoading ( {
content : '加载中'
} )
// 使用 mpapi 之后,多端兼容
api . showLoading ( '加载中' )
api . showLoading ( {
title : '提示内容'
} )
2. Les paramètres de retour sont incohérents
Par exemple : méthode showActionSheet
, après exécution, obtenez l'index sélectionné Dans WeChat et Baidu, c'est res.tapIndex
, dans Alipay, c'est res.index
, comme suit.
// 微信
wx . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.tapIndex
}
} )
// 支付宝
my . showActionSheet ( {
items : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.index
}
} )
// 使用 mpapi,多端兼容
api . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.tapIndex
}
} )
3. Non pris en charge, mais compatible
Par exemple : Alipay a my.alert
, mais WeChat et Baidu n'ont pas cette méthode. Cependant, vous pouvez encapsuler une méthode alert
via wx.showModal
de WeChat ou swan.showModal
de Baidu, comme suit.
api . alert ( '提示内容' )
api . alert ( {
content : '提示内容'
} )
// 请求数据,兼容多端
api . request ( { ... } ) . then ( ( res ) => { } )
4. Non pris en charge et incompatible
Certaines API ne sont valables que dans des terminaux spécifiques et ne peuvent pas être traitées en compatibilité, comme suit :
// 只在支付宝里面有效,微信和百度小程序里面会报错
api . startZMVerify ( { ... } )
// 建议这样处理
if ( api . isAlipay ) {
api . startZMVerify ( { ... } )
}
// 只在微信里面有效,支付宝或百度小程序里面会报错
api . setTopBarText ( { ... } )
// 建议这样处理
if ( api . isWechat ) {
api . setTopBarText ( { ... } )
}
// 百度智能小程序的特殊 API 一样的道理
if ( api . isSwan ) {
api . getSwanId ( ) . then ( ( res ) => { } )
}
1. Style Promise
de soutien
Toutes les API des mini-programmes, à condition qu'elles incluent des rappels success
, ont été encapsulées avec Promise
et peuvent être utilisées directement. Les deux méthodes d'écriture sont prises en charge, par exemple.
// 使用回调
api . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.tapIndex
}
} )
// 或者
api . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ]
} ) . then ( ( res ) => {
// res.tapIndex
} )
// 其它
api . setStorage ( { ... } ) . then ( ( res ) => { } )
api . chooseImage ( { ... } ) . then ( ( res ) => { } )
. . .
2. Les paramètres transmis et renvoyés dans la méthode compatible sont soumis à l'appel de l'applet WeChat . Les paramètres incompatibles avec d'autres terminaux ne sont pas traités (certains paramètres ne peuvent pas être traités et ne sont pas pris en charge par des mini-programmes spécifiques, comme par exemple).
api . chooseImage ( {
count : 1 ,
sizeType : [ 'original' , 'compressed' ] , // 只在微信可用
sourceType : [ 'album' , 'camera' ] ,
} ) . then ( ( res ) => {
// res.tempFilePaths 在微信和支付宝都可用
// res.tempFiles 只在微信可用
} )
Certaines API doivent prendre en charge Promise et appeler ses événements. Les méthodes suivantes peuvent donc être utilisées :
avant:
const downloadTask = wx . downloadFile ( {
url : 'https://example.com/audio/123' , // 仅为示例,并非真实的资源
success ( res ) {
console . log ( res )
}
} )
downloadTask . onProgressUpdate ( ( res ) => {
console . log ( res )
} )
downloadTask . abort ( ) // 取消下载任务
Après avoir utilisé 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') // 取消下载任务
D'autres API peuvent être gérées de la même manière, telles que : request
, uploadFile
, connectSocket
Si vous trouvez des bugs lors de l'utilisation ou avez de bonnes suggestions, n'hésitez pas à les signaler.
Journal des modifications