mpapi (miniProgram API) ปลั๊กอินที่เข้ากันได้กับ API ของโปรแกรมขนาดเล็ก เขียนเพียงครั้งเดียวและทำงานบนเทอร์มินัลหลายเครื่อง
⏰ วันที่อัปเดต: 31-05-2019 ฟังก์ชั่นมินิโปรแกรมได้รับการอัปเดตอย่างต่อเนื่อง เวอร์ชันใหม่อาจแตกต่างกัน โปรดทราบ
ปัญหาที่โปรเจ็กต์นี้แก้ไขได้ : ค้นหาความแตกต่างระหว่าง Mini Program API ต่างๆ และลอง ใช้ชุด API เพื่อให้เข้ากันได้กับ Mini Program หลายตัว
api.showToast
สามารถส่ง string
ได้โดยตรง api.setStorageSync
ไม่จำเป็นต้องเรียก try catch 等
request
, downloadFile
, detailapi.isWechat
, api.isAlipay
, api.isSwan
, api.isTt
npm install mpapi --save
วิธีการติดตั้งที่ไม่ใช่ npm เพียงแนะนำ mpapi.js
ในไดเร็กทอรี lib
ลงในโปรเจ็กต์โดยตรง
const api = require ( 'mpapi' )
api . alert ( { ... } ) . then ( ( res ) => { } )
api . confirm ( { ... } ) . then ( ( res ) => { } )
api . getLocation ( ) . then ( ( res ) => { } )
. . .
request
, downloadFile
, uploadFile
ฯลฯAPI ที่มินิโปรแกรมทั้งหมดสามารถใช้ได้
ปฏิสัมพันธ์
alert
confirm
showToast
showLoading
showActionSheet
แถบนำทาง
setNavigationBarTitle
setNavigationBarColor
เอกสาร
saveFile
getFileInfo
getSavedFileInfo
getSavedFileList
removeSavedFile
รูปภาพ
chooseImage
previewImage
compressImage
saveImageToPhotosAlbum
ถาม
request
uploadFile
downloadFile
แคชข้อมูล
setStorageSync
getStorageSync
clearStorageSync
getStorageInfoSync
removeStorageSync
อุปกรณ์ระบบ
getSystemInfoSync
setScreenBrightness
getScreenBrightness
makePhoneCall
scanCode
setClipboardData
getClipboardData
รองรับเฉพาะมินิโปรแกรมเฉพาะเท่านั้น
แอพเพล็ต WeChat , แอพเพล็ต Alipay , แอพเพล็ตอัจฉริยะ Baidu , แอพเพล็ต ByteDance หากมีไอคอน แสดงว่ารองรับเฉพาะแอปเพล็ตที่เกี่ยวข้องเท่านั้น หากไม่มีไอคอน แสดงว่ารองรับทั้งหมด
ปฏิสัมพันธ์
hideToast
hideLoading
showModal
prompt
แคช
getStorage
setStorage
removeStorage
getStorageInfo
การกำหนดเส้นทาง
reLaunch
switchTab
redirectTo
navigateTo
navigateBack
ที่ตั้ง
getLocation
openLocation
chooseLocation
ไฟล์รูปภาพ
saveImage
getImageInfo
chooseVideo
chooseMessageFile
saveVideoToPhotosAlbum
openDocument
เสียง
stopVoice
playVoice
getAvailableAudioSources
stopBackgroundAudio
playBackgroundAudio
seekBackgroundAudio
pauseBackgroundAudio
getBackgroundAudioPlayerState
setInnerAudioOption
startRecord
stopRecord
stopRecord
แถบนำทาง
getTitleColor
setNavigationBar
showNavigationBarLoading
hideNavigationBarLoading
พื้นหลัง
setBackgroundTextStyle
setBackgroundColor
showTabBar
hideTabBar
setTabBarItem
setTabBarStyle
showTabBarRedDot
hideTabBarRedDot
setTabBarBadge
removeTabBarBadge
ดึงลงเพื่อรีเฟรช
startPullDownRefresh
stopPullDownRefresh
เลื่อน
pageScrollTo
sendSocketMessage
connectSocket
closeSocket
startLocalServiceDiscovery
stopLocalServiceDiscovery
ปักหมุดไว้ด้านบน
setTopBarText
ผ้าใบ
canvasGetImageData
canvasPutImageData
canvasToTempFilePath
แบ่งปันและส่งต่อ
getShareInfo
updateShareMenu
showShareMenu
hideShareMenu
showFavoriteGuide
openShare
การเข้าสู่ระบบ การอนุญาต ข้อมูลผู้ใช้
login
checkSession
getUserInfo
getAuthCode
getAuthUserInfo
getPhoneNumber
authorize
จ่าย
tradePay
requestPayment
requestPolymerPayment
อินเตอร์เฟซแบบเปิด
getSetting
openSetting
reportAnalytics
chooseInvoiceTitle
navigateToMiniProgram
navigateBackMiniProgram
เปิดอินเทอร์เฟซ - แอปเพล็ต WeChat
addCard
openCard
chooseInvoice
startSoterAuthentication
checkIsSoterEnrolledInDevice
checkIsSupportSoterAuthentication
getWeRunData
เปิดอินเทอร์เฟซ - แอพเพล็ต Alipay
startZMVerify
textRiskIdentification
addCardAuth
getRunScene
chooseCity
datePicker
optionsSelect
multiLevelSelect
rsa
เปิดอินเทอร์เฟซ - แอปเพล็ตอัจฉริยะ Baidu
getSwanId
navigateToSmartProgram
navigateBackSmartProgram
setPageInfo
setMetaDescription
setMetaKeywords
setDocumentTitle
loadSubPackage
ผู้ติดต่อ
chooseAddress
chooseContact
choosePhoneContact
chooseAlipayContact
addPhoneContact
กำลังโหลดแบบอักษร
loadFontFace
ข้อมูลระบบ
getSystemInfo
getBatteryInfo
getNetworkType
setKeepScreenOn
startAccelerometer
stopAccelerometer
startCompass
stopCompass
startDeviceMotionListening
stopDeviceMotionListening
startGyroscope
stopGyroscope
vibrate
vibrateShort
vibrateLong
watchShake
setEnableDebug
getServerTime
scan
บลูทูธไร้สาย
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
แพลตฟอร์มของบุคคลที่สาม
getExtConfig
API ระดับลึก หมายเหตุ: วิธีการจะขึ้นต้นด้วย $
api.ap
api.ap.$faceVerify
api.ap.$navigateToAlipayPage
...
api.ai
api.ai.$ocrIdCard
api.ai.$ocrBankCard
...
อินสแตนซ์ใหม่ของออบเจ็กต์ที่อยู่เหนือ API
createMapContext
createVideoContext
createAudioContext
createCameraContext
createInnerAudioContext
createLivePusherContext
createLivePlayerContext
getBackgroundAudioManager
getRecorderManager
createSelectorQuery
getFileSystemManager
createARCameraContext
ตัวอย่างเช่น: หมายเหตุ: วิธีการนี้นำหน้าด้วย $
let ctx = api . createMapContext ( 'maper' )
ctx . $getCenterLocation ( ) . then ( ( res ) => {
console . log ( 'createMapContext:getCenterLocation' )
console . log ( res )
} )
1. การส่งพารามิเตอร์ไม่สอดคล้องกัน
ตัวอย่างเช่น: วิธี showLoading
, สำเนาการแสดงผลที่โหลด, พารามิเตอร์ title
ใน WeChat และ Baidu และพารามิเตอร์ content
ใน Alipay ดังนี้
// 微信
wx . showLoading ( {
title : '加载中'
} )
// 百度
swan . showLoading ( {
title : '加载中'
} )
// 支付宝
my . showLoading ( {
content : '加载中'
} )
// 使用 mpapi 之后,多端兼容
api . showLoading ( '加载中' )
api . showLoading ( {
title : '提示内容'
} )
2. พารามิเตอร์ส่งคืนไม่สอดคล้องกัน
ตัวอย่างเช่น: วิธี showActionSheet
หลังจากดำเนินการแล้ว ให้รับดัชนีที่เลือก ใน WeChat และ Baidu มันคือ res.tapIndex
ใน Alipay มันคือ res.index
ดังนี้
// 微信
wx . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.tapIndex
}
} )
// 支付宝
my . showActionSheet ( {
items : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.index
}
} )
// 使用 mpapi,多端兼容
api . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.tapIndex
}
} )
3. ไม่รองรับ แต่เข้ากันได้
ตัวอย่างเช่น: Alipay มี my.alert
แต่ WeChat และ Baidu ไม่มีวิธีนี้ อย่างไรก็ตาม คุณสามารถสรุปวิธี alert
ผ่าน wx.showModal
ของ WeChat หรือ swan.showModal
ของ Baidu ได้ดังนี้
api . alert ( '提示内容' )
api . alert ( {
content : '提示内容'
} )
// 请求数据,兼容多端
api . request ( { ... } ) . then ( ( res ) => { } )
4. ไม่รองรับและเข้ากันไม่ได้
API บางตัวใช้ได้เฉพาะในเทอร์มินัลบางตัวเท่านั้น และไม่สามารถประมวลผลความเข้ากันได้ได้ดังต่อไปนี้:
// 只在支付宝里面有效,微信和百度小程序里面会报错
api . startZMVerify ( { ... } )
// 建议这样处理
if ( api . isAlipay ) {
api . startZMVerify ( { ... } )
}
// 只在微信里面有效,支付宝或百度小程序里面会报错
api . setTopBarText ( { ... } )
// 建议这样处理
if ( api . isWechat ) {
api . setTopBarText ( { ... } )
}
// 百度智能小程序的特殊 API 一样的道理
if ( api . isSwan ) {
api . getSwanId ( ) . then ( ( res ) => { } )
}
1. สนับสนุนสไตล์ Promise
API ของมินิโปรแกรมทั้งหมด ตราบใดที่มีการเรียกกลับ success
จะถูกห่อหุ้มด้วย Promise
และสามารถใช้ได้โดยตรง เช่น รองรับวิธีการเขียนทั้งสองวิธี
// 使用回调
api . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ] ,
success : ( res ) => {
// res.tapIndex
}
} )
// 或者
api . showActionSheet ( {
itemList : [ '台球' , '羽毛球' , '篮球' ]
} ) . then ( ( res ) => {
// res.tapIndex
} )
// 其它
api . setStorage ( { ... } ) . then ( ( res ) => { } )
api . chooseImage ( { ... } ) . then ( ( res ) => { } )
. . .
2. พารามิเตอร์ที่ส่งและส่งคืนในวิธีที่เข้ากันได้ นั้นอยู่ภายใต้การเรียกแอปเพล็ต WeChat พารามิเตอร์ที่เข้ากันไม่ได้กับเทอร์มินัลอื่นจะไม่ได้รับการประมวลผล (พารามิเตอร์บางตัวไม่สามารถประมวลผลได้และไม่รองรับโดยมินิโปรแกรมเฉพาะ) นักพัฒนาจำเป็นต้องให้ความสนใจ เช่น
api . chooseImage ( {
count : 1 ,
sizeType : [ 'original' , 'compressed' ] , // 只在微信可用
sourceType : [ 'album' , 'camera' ] ,
} ) . then ( ( res ) => {
// res.tempFilePaths 在微信和支付宝都可用
// res.tempFiles 只在微信可用
} )
API บางตัวจำเป็นต้องรองรับ Promise และเรียกใช้เหตุการณ์ ดังนั้นจึงสามารถใช้วิธีการต่อไปนี้ได้
ก่อน:
const downloadTask = wx . downloadFile ( {
url : 'https://example.com/audio/123' , // 仅为示例,并非真实的资源
success ( res ) {
console . log ( res )
}
} )
downloadTask . onProgressUpdate ( ( res ) => {
console . log ( res )
} )
downloadTask . abort ( ) // 取消下载任务
หลังจากใช้ 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 อื่นๆ สามารถจัดการได้ในลักษณะเดียวกัน เช่น: request
, uploadFile
, connectSocket
หากคุณพบข้อบกพร่องระหว่างการใช้งานหรือมีข้อเสนอแนะที่ดี โปรดรายงานข้อผิดพลาดเหล่านั้นได้ตามสบาย
บันทึกการเปลี่ยนแปลง