mpapi (miniProgram API), ein mit der Miniprogramm-API kompatibles Plug-in, das einmal geschrieben und auf mehreren Terminals ausgeführt werden kann.
⏰ Aktualisierungsdatum: 31.05.2019, die Funktionen des Miniprogramms werden ständig aktualisiert, die neue Version kann abweichen, bitte beachten Sie.
Das Problem, das dieses Projekt löst : Finden Sie die Unterschiede zwischen verschiedenen Miniprogramm-APIs und versuchen Sie , eine Reihe von APIs zu verwenden, um mit mehreren Miniprogrammen kompatibel zu sein .
api.showToast
kann string
direkt übergeben, api.setStorageSync
muss nicht try catch 等
aufrufen.request
, downloadFile
, „details“.api.isWechat
, api.isAlipay
, api.isSwan
, api.isTt
npm install mpapi --save
Nicht-npm-Installationsmethode. Führen Sie einfach mpapi.js
im lib
Verzeichnis direkt in das Projekt ein
const api = require ( 'mpapi' )
api . alert ( { ... } ) . then ( ( res ) => { } )
api . confirm ( { ... } ) . then ( ( res ) => { } )
api . getLocation ( ) . then ( ( res ) => { } )
. . .
request
, downloadFile
, uploadFile
usw.API, die von allen Miniprogrammen verwendet werden kann
Interaktion
alert
confirm
showToast
showLoading
showActionSheet
Navigationsleiste
setNavigationBarTitle
setNavigationBarColor
dokumentieren
saveFile
getFileInfo
getSavedFileInfo
getSavedFileList
removeSavedFile
Bild
chooseImage
previewImage
compressImage
saveImageToPhotosAlbum
fragen
request
uploadFile
downloadFile
Datencache
setStorageSync
getStorageSync
clearStorageSync
getStorageInfoSync
removeStorageSync
Systemausrüstung
getSystemInfoSync
setScreenBrightness
getScreenBrightness
makePhoneCall
scanCode
setClipboardData
getClipboardData
Wird nur im Rahmen bestimmter Miniprogramme unterstützt
WeChat-Applet , Alipay-Applet , Intelligentes Baidu-Applet , ByteDance-Applet Wenn ein Symbol vorhanden ist, bedeutet dies, dass nur das entsprechende Applet unterstützt wird. Wenn kein Symbol vorhanden ist, bedeutet dies, dass alle unterstützt werden.
Interaktion
hideToast
hideLoading
showModal
prompt
Cache
getStorage
setStorage
removeStorage
getStorageInfo
Routenführung
reLaunch
switchTab
redirectTo
navigateTo
navigateBack
Standort
getLocation
openLocation
chooseLocation
Dateibild
saveImage
getImageInfo
chooseVideo
chooseMessageFile
saveVideoToPhotosAlbum
openDocument
Audio
stopVoice
playVoice
getAvailableAudioSources
stopBackgroundAudio
playBackgroundAudio
seekBackgroundAudio
pauseBackgroundAudio
getBackgroundAudioPlayerState
setInnerAudioOption
startRecord
stopRecord
stopRecord
Navigationsleiste
getTitleColor
setNavigationBar
showNavigationBarLoading
hideNavigationBarLoading
Hintergrund
setBackgroundTextStyle
setBackgroundColor
showTabBar
hideTabBar
setTabBarItem
setTabBarStyle
showTabBarRedDot
hideTabBarRedDot
setTabBarBadge
removeTabBarBadge
Zum Aktualisieren nach unten ziehen
startPullDownRefresh
stopPullDownRefresh
scrollen
pageScrollTo
sendSocketMessage
connectSocket
closeSocket
startLocalServiceDiscovery
stopLocalServiceDiscovery
Nach oben stecken
setTopBarText
Leinwand
canvasGetImageData
canvasPutImageData
canvasToTempFilePath
Teilen und weiterleiten
getShareInfo
updateShareMenu
showShareMenu
hideShareMenu
showFavoriteGuide
openShare
Login, Autorisierung, Benutzerinformationen
login
checkSession
getUserInfo
getAuthCode
getAuthUserInfo
getPhoneNumber
authorize
zahlen
tradePay
requestPayment
requestPolymerPayment
offene Schnittstelle
getSetting
openSetting
reportAnalytics
chooseInvoiceTitle
navigateToMiniProgram
navigateBackMiniProgram
Offene Schnittstelle – WeChat-Applet
addCard
openCard
chooseInvoice
startSoterAuthentication
checkIsSoterEnrolledInDevice
checkIsSupportSoterAuthentication
getWeRunData
Offene Schnittstelle – Alipay-Applet
startZMVerify
textRiskIdentification
addCardAuth
getRunScene
chooseCity
datePicker
optionsSelect
multiLevelSelect
rsa
Offene Schnittstelle – Baidu Smart Applet
getSwanId
navigateToSmartProgram
navigateBackSmartProgram
setPageInfo
setMetaDescription
setMetaKeywords
setDocumentTitle
loadSubPackage
Ansprechpartner
chooseAddress
chooseContact
choosePhoneContact
chooseAlipayContact
addPhoneContact
Laden der Schriftart
loadFontFace
Systeminformationen
getSystemInfo
getBatteryInfo
getNetworkType
setKeepScreenOn
startAccelerometer
stopAccelerometer
startCompass
stopCompass
startDeviceMotionListening
stopDeviceMotionListening
startGyroscope
stopGyroscope
vibrate
vibrateShort
vibrateLong
watchShake
setEnableDebug
getServerTime
scan
Bluetooth drahtlos
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
Plattform eines Drittanbieters
getExtConfig
Deep-Level-API, Hinweis: Den Methoden wird $
vorangestellt
api.ap
api.ap.$faceVerify
api.ap.$navigateToAlipayPage
...
api.ai
api.ai.$ocrIdCard
api.ai.$ocrBankCard
...
Eine neue Instanz des Objekts über der API
createMapContext
createVideoContext
createAudioContext
createCameraContext
createInnerAudioContext
createLivePusherContext
createLivePlayerContext
getBackgroundAudioManager
getRecorderManager
createSelectorQuery
getFileSystemManager
createARCameraContext
Beispiel: Hinweis: Der Methode wird $
vorangestellt
let ctx = api . createMapContext ( 'maper' )
ctx . $getCenterLocation ( ) . then ( ( res ) => {
console . log ( 'createMapContext:getCenterLocation' )
console . log ( res )
} )
1. Inkonsistente Parameterübertragung
Beispiel: showLoading
-Methode, geladene Anzeigekopie, title
in WeChat und Baidu und content
in Alipay wie folgt
// 微信
wx . showLoading ( {
title : '加载中'
} )
// 百度
swan . showLoading ( {
title : '加载中'
} )
// 支付宝
my . showLoading ( {
content : '加载中'
} )
// 使用 mpapi 之后,多端兼容
api . showLoading ( '加载中' )
api . showLoading ( {
title : '提示内容'
} )
2. Rückgabeparameter sind inkonsistent
Beispiel: showActionSheet
-Methode: Rufen Sie nach der Ausführung den ausgewählten Index ab. In WeChat und Baidu ist es res.tapIndex
, in Alipay ist es res.index
, wie folgt
// 微信
wx . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.tapIndex
}
} )
// 支付宝
my . showActionSheet ( {
items : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.index
}
} )
// 使用 mpapi,多端兼容
api . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.tapIndex
}
} )
3. Nicht unterstützt, aber kompatibel
Beispiel: Alipay verfügt über my.alert
, WeChat und Baidu jedoch nicht über diese Methode. Sie können jedoch eine alert
über wx.showModal
von WeChat oder swan.showModal
von Baidu kapseln
api . alert ( '提示内容' )
api . alert ( {
content : '提示内容'
} )
// 请求数据,兼容多端
api . request ( { ... } ) . then ( ( res ) => { } )
4. Nicht unterstützt und inkompatibel
Einige APIs sind nur in bestimmten Terminals gültig und können nicht kompatibel verarbeitet werden, wie folgt:
// 只在支付宝里面有效,微信和百度小程序里面会报错
api . startZMVerify ( { ... } )
// 建议这样处理
if ( api . isAlipay ) {
api . startZMVerify ( { ... } )
}
// 只在微信里面有效,支付宝或百度小程序里面会报错
api . setTopBarText ( { ... } )
// 建议这样处理
if ( api . isWechat ) {
api . setTopBarText ( { ... } )
}
// 百度智能小程序的特殊 API 一样的道理
if ( api . isSwan ) {
api . getSwanId ( ) . then ( ( res ) => { } )
}
1. Unterstützen Sie Promise
-Stil
Alle Miniprogramm-APIs, sofern sie success
enthalten, wurden mit Promise
gekapselt und können beispielsweise direkt verwendet werden. Beide Schreibmethoden werden unterstützt
// 使用回调
api . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.tapIndex
}
} )
// 或者
api . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ]
} ) . then ( ( res ) => {
// res.tapIndex
} )
// 其它
api . setStorage ( { ... } ) . then ( ( res ) => { } )
api . chooseImage ( { ... } ) . then ( ( res ) => { } )
. . .
2. Die in der kompatiblen Methode übergebenen und zurückgegebenen Parameter unterliegen dem WeChat-Applet-Aufruf . Parameter, die mit anderen Terminals nicht kompatibel sind, werden nicht verarbeitet (einige Parameter können nicht verarbeitet werden und werden von bestimmten Miniprogrammen nicht unterstützt, z. B.).
api . chooseImage ( {
count : 1 ,
sizeType : [ 'original' , 'compressed' ] , // 只在微信可用
sourceType : [ 'album' , 'camera' ] ,
} ) . then ( ( res ) => {
// res.tempFilePaths 在微信和支付宝都可用
// res.tempFiles 只在微信可用
} )
Einige APIs müssen Promise unterstützen und seine Ereignisse aufrufen, daher können die folgenden Methoden verwendet werden:
vor:
const downloadTask = wx . downloadFile ( {
url : 'https://example.com/audio/123' , // 仅为示例,并非真实的资源
success ( res ) {
console . log ( res )
}
} )
downloadTask . onProgressUpdate ( ( res ) => {
console . log ( res )
} )
downloadTask . abort ( ) // 取消下载任务
Nach der Verwendung 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') // 取消下载任务
Andere APIs können ähnlich gehandhabt werden, wie zum Beispiel: request
, uploadFile
, connectSocket
Wenn Sie während der Nutzung Fehler finden oder gute Vorschläge haben, können Sie diese gerne melden.
Änderungsprotokoll