mpapi (miniProgram API)، وهو مكون إضافي متوافق مع واجهة برمجة تطبيقات البرنامج الصغير، يتم كتابته مرة واحدة وتشغيله على محطات طرفية متعددة.
⏰ تاريخ التحديث: 2019-05-31، يتم تحديث وظائف البرنامج المصغر باستمرار، قد يكون الإصدار الجديد مختلفًا، يرجى الانتباه.
المشكلة التي يحلها هذا المشروع : ابحث عن الاختلافات بين واجهات برمجة التطبيقات المصغرة المختلفة للبرامج، وحاول استخدام مجموعة من واجهات برمجة التطبيقات لتكون متوافقة مع العديد من البرامج المصغرة .
api.showToast
تمرير string
مباشرة، ولا يحتاج api.setStorageSync
إلى استدعاء try catch 等
request
و downloadFile
وdetailsapi.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 برنامج بايدو الذكي التطبيق الصغير 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
واجهة مفتوحة - برنامج بايدو الذكي
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.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 . startZMVerify ( { ... } )
// 建议这样处理
if ( api . isAlipay ) {
api . startZMVerify ( { ... } )
}
// 只在微信里面有效,支付宝或百度小程序里面会报错
api . setTopBarText ( { ... } )
// 建议这样处理
if ( api . isWechat ) {
api . setTopBarText ( { ... } )
}
// 百度智能小程序的特殊 API 一样的道理
if ( api . isSwan ) {
api . getSwanId ( ) . then ( ( res ) => { } )
}
1. دعم أسلوب Promise
تم تغليف جميع واجهات برمجة تطبيقات البرامج المصغرة، طالما أنها تتضمن عمليات رد اتصال 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 只在微信可用
} )
تحتاج بعض واجهات برمجة التطبيقات إلى دعم 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') // 取消下载任务
يمكن التعامل مع واجهات برمجة التطبيقات الأخرى بالمثل، مثل: request
و uploadFile
و connectSocket
إذا وجدت أخطاء أثناء الاستخدام أو كانت لديك اقتراحات جيدة، فلا تتردد في الإبلاغ عنها.
تغيير السجل