之前将微信小游戏转换接入到支付宝,现在接入到华为快应用,都出现过不支持微信函数的问题,而且调用不存在的函数,错误被吞掉,以至于要花时间找位置,现在这里给出一个简单小技巧来解决此类问题:
也就是将微信的函数在现有平台检测一次,并赋予自定义函数(如有平台适配函数,可以单独赋值),以下为步骤:
- 在微信开发者工具里面保存wx绑定的所有接口,然后到当前缓存目录下去拷贝出来:
wx.getFileSystemManager().writeFileSync(wx.env.USER_DATA_PATH + “/keys.json”, JSON.stringify(Object.keys(wx))) - 在项目中绑定不存在的函数,当有调用时就会打印错误:
import { DEBUG } from “cc/env”;
let wx_funcs = [];
if(DEBUG) {
wx_funcs = ["requirePrivacyAuthorize","onNeedPrivacyAuthorization","getPrivacySetting","openPrivacyContract","request","downloadFile","uploadFile","addNativeDownloadTask","calRqt","connectSocket","closeSocket","sendSocketMessage","onSocketOpen","onSocketClose","onSocketMessage","onSocketError","getNetworkType","onNetworkStatusChange","offNetworkStatusChange","onNetworkWeakChange","offNetworkWeakChange","openDocument","setStorage","setStorageSync","getStorage","getStorageSync","getStorageInfo","getStorageInfoSync","removeStorage","removeStorageSync","clearStorage","clearStorageSync","getBackgroundFetchData","onBackgroundFetchData","setBackgroundFetchToken","getBackgroundFetchToken","authorize","checkSession","getUserInfo","getUserProfile","login","openSetting","getSetting","operateWXData","getWeRunData","uploadWeRunData","addWeRunData","getGroupMsgTicket","removeUserCloudStorage","setUserCloudStorage","openCustomerServiceConversation","sendRedPacket","openRedPacket","sendBizRedPacket","showRedPackage","reportAnalytics","reportMonitor","requestSubscribeMessage","requestSubscribeSystemMessage","requestSubscribeWhatsNew","getWhatsNewSubscriptionsSetting","getUserGameLabel","reportUserBehaviorBranchAnalytics","addCard","openCard","saveFile","getFileInfo","getSavedFileList","getSavedFileInfo","removeSavedFile","getFileSystemManager","saveFileToDisk","getDeviceInfo","getDeviceBenchmarkInfo","getWindowInfo","getAppBaseInfo","getSystemSetting","getAppAuthorizeSetting","openSystemBluetoothSetting","openAppAuthorizeSetting","startAccelerometer","stopAccelerometer","onAccelerometerChange","offAccelerometerChange","onWindowStateChange","offWindowStateChange","onGamepadConnected","offGamepadConnected","onGamepadDisconnected","getGamepads","offGamepadDisconnected","scanCode","startCompass","stopCompass","onCompassChange","offCompassChange","startDeviceMotionListening","stopDeviceMotionListening","onDeviceMotionChange","offDeviceMotionChange","startGyroscope","stopGyroscope","onGyroscopeChange","offGyroscopeChange","setScreenBrightness","getScreenBrightness","setKeepScreenOn","captureScreen","setVisualEffectOnCapture","getScreenRecordingState","onScreenRecordingStateChanged","offScreenRecordingStateChanged","vibrateShort","vibrateLong","getClipboardData","setClipboardData","makeBluetoothPair","isBluetoothDevicePaired","openBluetoothAdapter","closeBluetoothAdapter","getBluetoothAdapterState","onBluetoothAdapterStateChange","offBluetoothAdapterStateChange","startBluetoothDevicesDiscovery","stopBluetoothDevicesDiscovery","getBluetoothDevices","getConnectedBluetoothDevices","createBLEConnection","closeBLEConnection","getBLEDeviceServices","getBLEDeviceRSSI","setBLEMTU","getBLEMTU","getBLEDeviceCharacteristics","createBLEPeripheralServer","onBLEPeripheralConnectionStateChanged","offBLEPeripheralConnectionStateChanged","notifyBLECharacteristicValueChanged","notifyBLECharacteristicValueChange","readBLECharacteristicValue","writeBLECharacteristicValue","onBluetoothDeviceFound","offBluetoothDeviceFound","onBLEMTUChange","offBLEMTUChange","onBLEConnectionStateChanged","onBLEConnectionStateChange","onBLECharacteristicValueChange","offBLEConnectionStateChanged","offBLEConnectionStateChange","offBLECharacteristicValueChange","startBeaconDiscovery","stopBeaconDiscovery","getBeacons","onBeaconUpdate","offBeaconUpdate","onBeaconServiceChange","offBeaconServiceChange","getLocation","getFuzzyLocation","chooseMedia","chooseMessageFile","createInnerAudioContext","getAvailableAudioSources","setInnerAudioOption","createVideoDecoder","createMediaAudioPlayer","createWebAudioContext","getRecorderManager","chooseImage","previewImage","previewMedia","saveImageToPhotosAlbum","compressImage","joinVoIPChat","exitVoIPChat","updateVoIPChatMuteConfig","onVoIPChatMembersChanged","onVoIPChatSpeakersChanged","onVoIPChatInterrupted","offVoIPChatMembersChanged","offVoIPChatSpeakersChanged","offVoIPChatInterrupted","subscribeVoIPVideoMembers","onVoIPVideoMembersChanged","offVoIPVideoMembersChanged","onVoIPChatStateChanged","offVoIPChatStateChanged","createCanvas","createOffScreenCanvas","createImage","createImageData","createPath2D","onTouchStart","offTouchStart","onTouchMove","offTouchMove","onTouchEnd","offTouchEnd","onTouchCancel","offTouchCancel","onWheel","offWheel","onMouseDown","offMouseDown","onMouseMove","offMouseMove","onMouseUp","offMouseUp","onKeyDown","offKeyDown","onKeyUp","offKeyUp","onPointerLockChange","offPointerLockChange","onPointerLockError","offPointerLockError","onKeyboardInput","offKeyboardInput","onKeyboardConfirm","offKeyboardConfirm","onKeyboardComplete","offKeyboardComplete","onKeyboardHeightChange","offKeyboardHeightChange","onWindowResize","offWindowResize","onGameLiveStateChange","offGameLiveStateChange","startGameLive","checkGameLiveEnabled","getGameLiveState","getUserRecentGameLiveInfo","getUserCurrentGameliveInfo","getUserGameLiveDetails","onGameAuditStateChange","offGameAuditStateChange","getShareInfo","authPrivateMessage","showShareMenu","hideShareMenu","updateShareMenu","onShareAppMessage","offShareAppMessage","onShareTimeline","offShareTimeline","shareAppMessage","shareInvitationToLiveRoom","setMessageToFriendQuery","onShareMessageToFriend","offShareMessageToFriend","onAddToFavorites","offAddToFavorites","showShareImageMenu","onCopyUrl","offCopyUrl","setWindowSize","setTopBarText","showToast","hideToast","showLoading","hideLoading","showModal","showActionSheet","setMenuStyle","setStatusBarStyle","getMenuButtonBoundingClientRect","hideSplashScreen","onError","offError","onUnhandledRejection","offUnhandledRejection","onLaunch","offLaunch","onShow","offShow","onHide","offHide","onAudioInterruptionBegin","offAudioInterruptionBegin","onAudioInterruptionEnd","offAudioInterruptionEnd","onShareInvitationToLiveRoom","offShareInvitationToLiveRoom","getSystemInfo","getSystemInfoSync","getSystemInfoAsync","getBatteryInfo","getBatteryInfoSync","getLaunchOptionsSync","getEnterOptionsSync","setPreferredFramesPerSecond","loadFont","setCursor","requestPointerLock","exitPointerLock","isPointerLocked","getTextLineHeight","requestMidasPayment","requestMidasPaymentGameItem","requestMidasFriendPayment","checkIsSupportMidasFriendPayment","requestVirtualPayment","requestMerchantTransfer","gameLoginReport","gameLogoutReport","exitMiniProgram","restartMiniProgram","launchApp","showKeyboard","hideKeyboard","updateKeyboard","getExtConfig","getExtConfigSync","bindGroup","joinGroup","getAccountInfoSync","encode","decode","createVideo","createCamera","createLivePlayer","createLivePusher","createWebView","setDeviceOrientation","onDeviceOrientationChange","offDeviceOrientationChange","onUserCaptureScreen","offUserCaptureScreen","postMessage","onMessage","getOpenDataContext","createUserGameData","updateUserGameData","getPerformance","setEnableDebug","triggerGC","onMemoryWarning","offMemoryWarning","reportPerformance","testApiCallTime","createWorker","createSharedArrayBuffer","checkIsUserAdvisedToRest","getUpdateManager","updateWeChatApp","getAd","openTencentGameContract","openTencentPrivacyContract","openUrl","openTencentBoardGameContract","openTencentChildrenGuideContract","openTencentAccountCancelContract","createRewardedVideoAd","createIncentiveVideoAd","createBannerAd","createInterstitialAd","createCustomAd","createGridAd","createCpsAd","createUserInfoButton","createGameClubButton","createOpenSettingButton","createFeedbackButton","loadSubpackage","preDownloadSubpackage","navigateToMiniProgram","navigateBackMiniProgram","createUDPSocket","markScene","reportScene","reportPerformanceScene","createGamePortal","createGameBanner","createGameIcon","getUserInteractiveStorage","onInteractiveStorageModified","offInteractiveStorageModified","env","getLogManager","getRealtimeLogManager","error","isSystemError","isSDKError","isThirdError","getGameRecorder","createGameRecorderShareButton","operateGameRecorderVideo","cloud","serviceMarket","version","getGameServerManager","getBox2D","protobuf","createGameComponent","getGroupEnterInfo","onHandoff","offHandoff","setHandoffQuery","faceDetect","initFaceDetect","stopFaceDetect","createBufferURL","revokeBufferURL","createSignal","startLocalServiceDiscovery","stopLocalServiceDiscovery","onLocalServiceFound","offLocalServiceFound","onLocalServiceLost","offLocalServiceLost","onLocalServiceDiscoveryStop","offLocalServiceDiscoveryStop","onLocalServiceResolveFail","offLocalServiceResolveFail","getLocalIPAddress","startCPUProfiling","stopCPUProfiling","getExptInfo","getExptInfoSync","reportEvent","getChannelsLiveInfo","getChannelsLiveState","getChannelsLiveReservation","getChannelsLiveNoticeInfo","openChannelsLive","openChannelsActivity","openChannelsUserProfile","openChannelsLiveCollection","openChannelsEvent","reserveChannelsLive","lanDebug","createVKSession","createVKReference","isVKSupport","onVerifyNotify","offVerifyNotify","navigateToUserCenter","requestConsumeAdsSkipCard","dumpGameLivePanelUI","updateGameLivePanelMenu","createInferenceSession","getInferenceEnvInfo","getDebuggerMessager","getAdsSkipCardSharePresentQuota","getAdsSkipCardQuestInfo","getUserCryptoManager","getRealNameVerifyMethod","addToDesktop","openPage","getGameClubData","previewPlayableView","checkIsAddedToMyMiniProgram","requestSubscribeLiveActivity","openCustomerServiceChat","createTCPSocket","openBusinessView","previewPlayableViewNew","removePlayableView","getPhoneNumber","openUrlByExtBrowser","getGameLogManager","createPageManager","openChatTool","isChatTool","exitChatTool","getChatToolInfo","selectGroupMembers","notifyGroupMembers","shareImageToGroup","shareEmojiToGroup","shareVideoToGroup","shareAppMessageToGroup","shareTextToGroup","chooseAddress","getOfficialComponentsInfo","onOfficialComponentsInfoChange","offOfficialComponentsInfoChange"];
}
// 传入平台对应的对象
export function PlatformAdapt(pobj) {
for(let i=0;i<wx_funcs.length;i++) {
let fun = wx_funcs[i];
if(!pobj[fun]) {
pobj[fun] = function() {
console.error(`当前平台无函数:${fun}`);
}
}
}
}
这样应该会节约一些调试时间,完工!

写过一套完整的,针对不同的平台,如果不存在该api,直接调用基类函数