mpapi (miniProgram API), sebuah plug-in yang kompatibel dengan API program mini, ditulis sekali dan dijalankan di banyak terminal.
⏰ Tanggal pembaruan: 31-05-2019, fungsi program mini terus diperbarui, versi baru mungkin berbeda, harap diperhatikan.
Masalah yang dipecahkan oleh proyek ini : Temukan perbedaan antara API program mini yang berbeda, dan coba gunakan sekumpulan API agar kompatibel dengan beberapa program mini .
api.showToast
dapat meneruskan string
secara langsung, api.setStorageSync
tidak perlu memanggil try catch 等
request
, downloadFile
, detailapi.isWechat
, api.isAlipay
, api.isSwan
, api.isTt
npm install mpapi --save
Metode instalasi non-npm, cukup masukkan mpapi.js
di direktori lib
langsung ke proyek
const api = require ( 'mpapi' )
api . alert ( { ... } ) . then ( ( res ) => { } )
api . confirm ( { ... } ) . then ( ( res ) => { } )
api . getLocation ( ) . then ( ( res ) => { } )
. . .
request
, downloadFile
, uploadFile
dll.API yang dapat digunakan oleh semua mini program
interaksi
alert
confirm
showToast
showLoading
showActionSheet
Bilah navigasi
setNavigationBarTitle
setNavigationBarColor
dokumen
saveFile
getFileInfo
getSavedFileInfo
getSavedFileList
removeSavedFile
gambar
chooseImage
previewImage
compressImage
saveImageToPhotosAlbum
bertanya
request
uploadFile
downloadFile
Tembolok data
setStorageSync
getStorageSync
clearStorageSync
getStorageInfoSync
removeStorageSync
Peralatan sistem
getSystemInfoSync
setScreenBrightness
getScreenBrightness
makePhoneCall
scanCode
setClipboardData
getClipboardData
Hanya didukung dalam program mini tertentu
apel WeChat , applet Alipay , applet pintar Baidu , applet ByteDance , jika ada icon berarti hanya applet yang sesuai yang didukung, jika tidak ada icon berarti semua didukung.
interaksi
hideToast
hideLoading
showModal
prompt
cache
getStorage
setStorage
removeStorage
getStorageInfo
rute
reLaunch
switchTab
redirectTo
navigateTo
navigateBack
Lokasi
getLocation
openLocation
chooseLocation
Gambar berkas
saveImage
getImageInfo
chooseVideo
chooseMessageFile
saveVideoToPhotosAlbum
openDocument
Audio
stopVoice
playVoice
getAvailableAudioSources
stopBackgroundAudio
playBackgroundAudio
seekBackgroundAudio
pauseBackgroundAudio
getBackgroundAudioPlayerState
setInnerAudioOption
startRecord
stopRecord
stopRecord
Bilah navigasi
getTitleColor
setNavigationBar
showNavigationBarLoading
hideNavigationBarLoading
latar belakang
setBackgroundTextStyle
setBackgroundColor
showTabBar
hideTabBar
setTabBarItem
setTabBarStyle
showTabBarRedDot
hideTabBarRedDot
setTabBarBadge
removeTabBarBadge
Tarik ke bawah untuk menyegarkan
startPullDownRefresh
stopPullDownRefresh
menggulir
pageScrollTo
sendSocketMessage
connectSocket
closeSocket
startLocalServiceDiscovery
stopLocalServiceDiscovery
sematkan ke atas
setTopBarText
kanvas
canvasGetImageData
canvasPutImageData
canvasToTempFilePath
Bagikan dan teruskan
getShareInfo
updateShareMenu
showShareMenu
hideShareMenu
showFavoriteGuide
openShare
Login, otorisasi, informasi pengguna
login
checkSession
getUserInfo
getAuthCode
getAuthUserInfo
getPhoneNumber
authorize
membayar
tradePay
requestPayment
requestPolymerPayment
antarmuka terbuka
getSetting
openSetting
reportAnalytics
chooseInvoiceTitle
navigateToMiniProgram
navigateBackMiniProgram
Buka antarmuka - applet WeChat
addCard
openCard
chooseInvoice
startSoterAuthentication
checkIsSoterEnrolledInDevice
checkIsSupportSoterAuthentication
getWeRunData
Buka antarmuka - applet Alipay
startZMVerify
textRiskIdentification
addCardAuth
getRunScene
chooseCity
datePicker
optionsSelect
multiLevelSelect
rsa
Buka antarmuka - applet pintar Baidu
getSwanId
navigateToSmartProgram
navigateBackSmartProgram
setPageInfo
setMetaDescription
setMetaKeywords
setDocumentTitle
loadSubPackage
Kontak person
chooseAddress
chooseContact
choosePhoneContact
chooseAlipayContact
addPhoneContact
Pemuatan font
loadFontFace
Informasi sistem
getSystemInfo
getBatteryInfo
getNetworkType
setKeepScreenOn
startAccelerometer
stopAccelerometer
startCompass
stopCompass
startDeviceMotionListening
stopDeviceMotionListening
startGyroscope
stopGyroscope
vibrate
vibrateShort
vibrateLong
watchShake
setEnableDebug
getServerTime
scan
nirkabel 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
Platform pihak ketiga
getExtConfig
API tingkat dalam, catatan: metode diawali dengan $
api.ap
api.ap.$faceVerify
api.ap.$navigateToAlipayPage
...
api.ai
api.ai.$ocrIdCard
api.ai.$ocrBankCard
...
Beberapa contoh baru dari objek di atas API
createMapContext
createVideoContext
createAudioContext
createCameraContext
createInnerAudioContext
createLivePusherContext
createLivePlayerContext
getBackgroundAudioManager
getRecorderManager
createSelectorQuery
getFileSystemManager
createARCameraContext
Misalnya: Catatan: Metode ini diawali dengan $
let ctx = api . createMapContext ( 'maper' )
ctx . $getCenterLocation ( ) . then ( ( res ) => {
console . log ( 'createMapContext:getCenterLocation' )
console . log ( res )
} )
1. Transmisi parameter tidak konsisten
Misalnya: metode showLoading
, salinan tampilan yang dimuat, parameter title
di WeChat dan Baidu, dan parameter content
di Alipay, sebagai berikut
// 微信
wx . showLoading ( {
title : '加载中'
} )
// 百度
swan . showLoading ( {
title : '加载中'
} )
// 支付宝
my . showLoading ( {
content : '加载中'
} )
// 使用 mpapi 之后,多端兼容
api . showLoading ( '加载中' )
api . showLoading ( {
title : '提示内容'
} )
2. Parameter pengembalian tidak konsisten
Misalnya: metode showActionSheet
, setelah eksekusi, dapatkan indeks yang dipilih. Di WeChat dan Baidu, itu adalah res.tapIndex
, di Alipay, itu adalah res.index
, sebagai berikut
// 微信
wx . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.tapIndex
}
} )
// 支付宝
my . showActionSheet ( {
items : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.index
}
} )
// 使用 mpapi,多端兼容
api . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.tapIndex
}
} )
3. Tidak didukung, tapi kompatibel
Misalnya: Alipay memiliki my.alert
, tetapi WeChat dan Baidu tidak memiliki metode ini. Namun, Anda dapat merangkum metode alert
melalui wx.showModal
milik WeChat atau swan.showModal
milik Baidu, sebagai berikut
api . alert ( '提示内容' )
api . alert ( {
content : '提示内容'
} )
// 请求数据,兼容多端
api . request ( { ... } ) . then ( ( res ) => { } )
4. Tidak didukung dan tidak kompatibel
Beberapa API hanya valid di terminal tertentu dan tidak dapat diproses secara kompatibilitas, sebagai berikut:
// 只在支付宝里面有效,微信和百度小程序里面会报错
api . startZMVerify ( { ... } )
// 建议这样处理
if ( api . isAlipay ) {
api . startZMVerify ( { ... } )
}
// 只在微信里面有效,支付宝或百度小程序里面会报错
api . setTopBarText ( { ... } )
// 建议这样处理
if ( api . isWechat ) {
api . setTopBarText ( { ... } )
}
// 百度智能小程序的特殊 API 一样的道理
if ( api . isSwan ) {
api . getSwanId ( ) . then ( ( res ) => { } )
}
1. Mendukung gaya Promise
Semua API program mini, asalkan menyertakan callback success
, telah dienkapsulasi dengan Promise
dan dapat digunakan secara langsung, misalnya, kedua metode penulisan
// 使用回调
api . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.tapIndex
}
} )
// 或者
api . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ]
} ) . then ( ( res ) => {
// res.tapIndex
} )
// 其它
api . setStorage ( { ... } ) . then ( ( res ) => { } )
api . chooseImage ( { ... } ) . then ( ( res ) => { } )
. . .
2. Parameter yang diteruskan dan dikembalikan dalam metode yang kompatibel tunduk pada panggilan applet WeChat . Parameter yang tidak kompatibel dengan terminal lain tidak diproses (beberapa parameter tidak dapat diproses dan tidak didukung oleh program mini tertentu yang perlu diperhatikan oleh Pengembang).
api . chooseImage ( {
count : 1 ,
sizeType : [ 'original' , 'compressed' ] , // 只在微信可用
sourceType : [ 'album' , 'camera' ] ,
} ) . then ( ( res ) => {
// res.tempFilePaths 在微信和支付宝都可用
// res.tempFiles 只在微信可用
} )
Beberapa API perlu mendukung Promise dan memanggil kejadiannya, sehingga metode berikut dapat digunakan:
sebelum:
const downloadTask = wx . downloadFile ( {
url : 'https://example.com/audio/123' , // 仅为示例,并非真实的资源
success ( res ) {
console . log ( res )
}
} )
downloadTask . onProgressUpdate ( ( res ) => {
console . log ( res )
} )
downloadTask . abort ( ) // 取消下载任务
Setelah menggunakan 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 lain dapat ditangani dengan cara yang sama, seperti: request
, uploadFile
, connectSocket
Jika Anda menemukan bug saat digunakan atau memiliki saran bagus, silakan laporkan.
Ubah catatan