mpapi(miniProgram API)는 미니 프로그램 API 호환 플러그인으로 한 번 작성되어 여러 터미널에서 실행됩니다.
⏰ 업데이트 날짜: 2019-05-31, 미니 프로그램 기능은 지속적으로 업데이트되고 있으며 새 버전은 다를 수 있으니 주의하시기 바랍니다.
이 프로젝트가 해결하는 문제 : 다양한 미니 프로그램 API 간의 차이점을 찾고, 여러 미니 프로그램과 호환되도록 API 세트를 사용해 보세요.
api.showToast
string
직접 전달할 수 있고 api.setStorageSync
try catch 等
의 특정 API 사용에 최적화되었습니다.request
, downloadFile
, 세부정보와 같은 특수 API의 이벤트 처리 지원api.isWechat
, api.isAlipay
, api.isSwan
, api.isTt
등 다양한 끝에서의 판단을 지원합니다. npm install mpapi --save
npm이 아닌 설치 방법, lib
디렉터리의 mpapi.js
프로젝트에 직접 도입하기만 하면 됩니다.
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
특정 미니 프로그램에서만 지원됩니다.
위챗 애플릿 , 알리페이 애플릿 , 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
메소드, 로드된 디스플레이 사본, WeChat 및 Baidu의 title
매개변수, Alipay의 content
매개변수는 다음과 같습니다.
// 微信
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에는 이 메서드가 없습니다. 그러나 다음과 같이 WeChat의 wx.showModal
또는 Baidu의 swan.showModal
통해 alert
메서드를 캡슐화할 수 있습니다.
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
스타일 지원
success
콜백을 포함하는 모든 미니 프로그램 API는 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') // 取消下载任务
request
, uploadFile
, connectSocket
과 같은 다른 API도 비슷하게 처리할 수 있습니다.
사용 중 버그를 발견하거나 좋은 제안이 있으시면 언제든지 신고해 주세요.
변경 로그