From 44b8205025f0a31085b5612982e3f5d81e41f726 Mon Sep 17 00:00:00 2001 From: azazaz123456 Date: Mon, 21 Jul 2025 15:58:20 +0800 Subject: [PATCH] 223 --- Assets/Plugins.meta | 8 + Assets/Plugins/iOS.meta | 8 + Assets/Plugins/iOS/WeChatWrapper.mm | 14 + Assets/Plugins/iOS/WeChatWrapper.mm.meta | 33 + ...OpenSDK-XCFramework-NoPay.xcframework.meta | 8 + .../.DS_Store | Bin 0 -> 6148 bytes .../Info.plist | 44 + .../Info.plist.meta | 7 + .../PrivacyInfo.xcprivacy | 17 + .../PrivacyInfo.xcprivacy.meta | 7 + .../README.txt | 167 ++ .../README.txt.meta | 7 + .../ios-arm64.meta | 8 + .../ios-arm64/.DS_Store | Bin 0 -> 6148 bytes .../ios-arm64/WechatOpenSDK.framework.meta | 34 + .../WechatOpenSDK.framework/.DS_Store | Bin 0 -> 6148 bytes .../WechatOpenSDK.framework/Headers.meta | 8 + .../WechatOpenSDK.framework/Headers/WXApi.h | 231 +++ .../Headers/WXApi.h.meta | 7 + .../Headers/WXApiObject.h | 1410 +++++++++++++++++ .../Headers/WXApiObject.h.meta | 7 + .../Headers/WechatAuthSDK.h | 68 + .../Headers/WechatAuthSDK.h.meta | 7 + .../Headers/WechatOpenSDK.h | 9 + .../Headers/WechatOpenSDK.h.meta | 7 + .../WechatOpenSDK.framework/Info.plist | 15 + .../WechatOpenSDK.framework/Info.plist.meta | 7 + .../WechatOpenSDK.framework/Modules.meta | 8 + .../Modules/module.modulemap | 5 + .../Modules/module.modulemap.meta | 7 + .../WechatOpenSDK.framework/WechatOpenSDK | Bin 0 -> 4211592 bytes .../WechatOpenSDK.meta | 7 + .../ios-arm64_x86_64-simulator.meta | 8 + .../ios-arm64_x86_64-simulator/.DS_Store | Bin 0 -> 6148 bytes .../WechatOpenSDK.framework.meta | 34 + .../WechatOpenSDK.framework/.DS_Store | Bin 0 -> 6148 bytes .../WechatOpenSDK.framework/Headers.meta | 8 + .../WechatOpenSDK.framework/Headers/WXApi.h | 231 +++ .../Headers/WXApi.h.meta | 7 + .../Headers/WXApiObject.h | 1410 +++++++++++++++++ .../Headers/WXApiObject.h.meta | 7 + .../Headers/WechatAuthSDK.h | 68 + .../Headers/WechatAuthSDK.h.meta | 7 + .../Headers/WechatOpenSDK.h | 9 + .../Headers/WechatOpenSDK.h.meta | 7 + .../WechatOpenSDK.framework/Info.plist | 15 + .../WechatOpenSDK.framework/Info.plist.meta | 7 + .../WechatOpenSDK.framework/Modules.meta | 8 + .../Modules/module.modulemap | 5 + .../Modules/module.modulemap.meta | 7 + .../WechatOpenSDK.framework/WechatOpenSDK | Bin 0 -> 8477392 bytes .../WechatOpenSDK.meta | 7 + Assets/Resources.meta | 8 + Assets/Resources/UILogin.prefab | 521 ++++++ Assets/Resources/UILogin.prefab.meta | 7 + Assets/Scenes.meta | 8 + Assets/Scenes/SampleScene.unity | 822 ++++++++++ Assets/Scenes/SampleScene.unity.meta | 7 + Assets/Scripts.meta | 8 + Assets/Scripts/EventCenter.meta | 8 + Assets/Scripts/EventCenter/EventCenter.cs | 44 + .../Scripts/EventCenter/EventCenter.cs.meta | 11 + Assets/Scripts/Init.cs | 18 + Assets/Scripts/Init.cs.meta | 11 + Assets/Scripts/UI.meta | 8 + Assets/Scripts/UI/UILogin.cs | 22 + Assets/Scripts/UI/UILogin.cs.meta | 11 + Assets/Scripts/UIBase.meta | 8 + Assets/Scripts/UIBase/UIBase.cs | 13 + Assets/Scripts/UIBase/UIBase.cs.meta | 11 + Assets/Scripts/UIBase/UIManager.cs | 83 + Assets/Scripts/UIBase/UIManager.cs.meta | 11 + Assets/Scripts/WeChatBridge.cs | 18 + Assets/Scripts/WeChatBridge.cs.meta | 11 + Packages/manifest.json | 45 + Packages/packages-lock.json | 393 +++++ ProjectSettings/AudioManager.asset | 19 + ProjectSettings/ClusterInputManager.asset | 6 + ProjectSettings/DynamicsManager.asset | 34 + ProjectSettings/EditorBuildSettings.asset | 8 + ProjectSettings/EditorSettings.asset | 30 + ProjectSettings/GraphicsSettings.asset | 63 + ProjectSettings/InputManager.asset | 295 ++++ ProjectSettings/MemorySettings.asset | 35 + ProjectSettings/NavMeshAreas.asset | 91 ++ ProjectSettings/PackageManagerSettings.asset | 35 + .../Settings.json | 7 + ProjectSettings/Physics2DSettings.asset | 56 + ProjectSettings/PresetManager.asset | 7 + ProjectSettings/ProjectSettings.asset | 920 +++++++++++ ProjectSettings/ProjectVersion.txt | 2 + ProjectSettings/QualitySettings.asset | 234 +++ ProjectSettings/SceneTemplateSettings.json | 167 ++ ProjectSettings/TagManager.asset | 43 + ProjectSettings/TimeManager.asset | 9 + ProjectSettings/UnityConnectSettings.asset | 36 + ProjectSettings/VFXManager.asset | 12 + ProjectSettings/VersionControlSettings.asset | 8 + ProjectSettings/XRSettings.asset | 10 + ProjectSettings/boot.config | 0 100 files changed, 8244 insertions(+) create mode 100644 Assets/Plugins.meta create mode 100644 Assets/Plugins/iOS.meta create mode 100644 Assets/Plugins/iOS/WeChatWrapper.mm create mode 100644 Assets/Plugins/iOS/WeChatWrapper.mm.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/.DS_Store create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/Info.plist create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/Info.plist.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/PrivacyInfo.xcprivacy create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/PrivacyInfo.xcprivacy.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/README.txt create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/README.txt.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/.DS_Store create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/.DS_Store create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WXApi.h create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WXApi.h.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WXApiObject.h create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WXApiObject.h.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WechatAuthSDK.h create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WechatAuthSDK.h.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WechatOpenSDK.h create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WechatOpenSDK.h.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Info.plist create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Info.plist.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Modules.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Modules/module.modulemap create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Modules/module.modulemap.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/WechatOpenSDK create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/WechatOpenSDK.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64_x86_64-simulator.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64_x86_64-simulator/.DS_Store create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/.DS_Store create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Headers.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Headers/WXApi.h create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Headers/WXApi.h.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Headers/WXApiObject.h create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Headers/WXApiObject.h.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Headers/WechatAuthSDK.h create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Headers/WechatAuthSDK.h.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Headers/WechatOpenSDK.h create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Headers/WechatOpenSDK.h.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Info.plist create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Info.plist.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Modules.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Modules/module.modulemap create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/Modules/module.modulemap.meta create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/WechatOpenSDK create mode 100644 Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64_x86_64-simulator/WechatOpenSDK.framework/WechatOpenSDK.meta create mode 100644 Assets/Resources.meta create mode 100644 Assets/Resources/UILogin.prefab create mode 100644 Assets/Resources/UILogin.prefab.meta create mode 100644 Assets/Scenes.meta create mode 100644 Assets/Scenes/SampleScene.unity create mode 100644 Assets/Scenes/SampleScene.unity.meta create mode 100644 Assets/Scripts.meta create mode 100644 Assets/Scripts/EventCenter.meta create mode 100644 Assets/Scripts/EventCenter/EventCenter.cs create mode 100644 Assets/Scripts/EventCenter/EventCenter.cs.meta create mode 100644 Assets/Scripts/Init.cs create mode 100644 Assets/Scripts/Init.cs.meta create mode 100644 Assets/Scripts/UI.meta create mode 100644 Assets/Scripts/UI/UILogin.cs create mode 100644 Assets/Scripts/UI/UILogin.cs.meta create mode 100644 Assets/Scripts/UIBase.meta create mode 100644 Assets/Scripts/UIBase/UIBase.cs create mode 100644 Assets/Scripts/UIBase/UIBase.cs.meta create mode 100644 Assets/Scripts/UIBase/UIManager.cs create mode 100644 Assets/Scripts/UIBase/UIManager.cs.meta create mode 100644 Assets/Scripts/WeChatBridge.cs create mode 100644 Assets/Scripts/WeChatBridge.cs.meta create mode 100644 Packages/manifest.json create mode 100644 Packages/packages-lock.json create mode 100644 ProjectSettings/AudioManager.asset create mode 100644 ProjectSettings/ClusterInputManager.asset create mode 100644 ProjectSettings/DynamicsManager.asset create mode 100644 ProjectSettings/EditorBuildSettings.asset create mode 100644 ProjectSettings/EditorSettings.asset create mode 100644 ProjectSettings/GraphicsSettings.asset create mode 100644 ProjectSettings/InputManager.asset create mode 100644 ProjectSettings/MemorySettings.asset create mode 100644 ProjectSettings/NavMeshAreas.asset create mode 100644 ProjectSettings/PackageManagerSettings.asset create mode 100644 ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json create mode 100644 ProjectSettings/Physics2DSettings.asset create mode 100644 ProjectSettings/PresetManager.asset create mode 100644 ProjectSettings/ProjectSettings.asset create mode 100644 ProjectSettings/ProjectVersion.txt create mode 100644 ProjectSettings/QualitySettings.asset create mode 100644 ProjectSettings/SceneTemplateSettings.json create mode 100644 ProjectSettings/TagManager.asset create mode 100644 ProjectSettings/TimeManager.asset create mode 100644 ProjectSettings/UnityConnectSettings.asset create mode 100644 ProjectSettings/VFXManager.asset create mode 100644 ProjectSettings/VersionControlSettings.asset create mode 100644 ProjectSettings/XRSettings.asset create mode 100644 ProjectSettings/boot.config diff --git a/Assets/Plugins.meta b/Assets/Plugins.meta new file mode 100644 index 0000000..17e7b55 --- /dev/null +++ b/Assets/Plugins.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 57763bc325ebd50429cf1a34e53b4852 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS.meta b/Assets/Plugins/iOS.meta new file mode 100644 index 0000000..e008682 --- /dev/null +++ b/Assets/Plugins/iOS.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 05824084773d805458994e640fa393a2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS/WeChatWrapper.mm b/Assets/Plugins/iOS/WeChatWrapper.mm new file mode 100644 index 0000000..4ba641c --- /dev/null +++ b/Assets/Plugins/iOS/WeChatWrapper.mm @@ -0,0 +1,14 @@ +#import "WXApi.h" + +extern "C" { + +void WeChatRegisterApp(const char* appId) { + NSString* nsAppId = [NSString stringWithUTF8String:appId]; + [WXApi registerApp:nsAppId universalLink:@"https://your.universal.link/"]; +} + +bool WeChatIsInstalled() { + return [WXApi isWXAppInstalled]; +} + +} diff --git a/Assets/Plugins/iOS/WeChatWrapper.mm.meta b/Assets/Plugins/iOS/WeChatWrapper.mm.meta new file mode 100644 index 0000000..10cc63e --- /dev/null +++ b/Assets/Plugins/iOS/WeChatWrapper.mm.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 598b5945b6a694c4e933e0fdba15e7fb +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + iPhone: iOS + second: + enabled: 1 + settings: + AddToEmbeddedBinaries: false + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework.meta b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework.meta new file mode 100644 index 0000000..6b1504a --- /dev/null +++ b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ab7d26447dce21e44b07e6a60ad4e11a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/.DS_Store b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..11a9784970b8cb67404e830ba001e3946a81f4c0 GIT binary patch literal 6148 zcmeH~(Q4Z;6o!x5v~gAnx#*zmO3>SsC21%vy)jw$0`=%Fw&B@xXiXif*v>o%0bg$~ zv?tl~^gogU>yq6RI=Z3*(l6_rBS)W+6cLda&yoRAmxw$R*47JDYmEI|R&2xeY(s?} zBcg()bWEeTUWs-cj({WZ)Clm}?NCaJN;;(9)^B+mXDWvGXMCHbW!3Nh5*wSXt?jng z_IA8a!L_P`DynAXI4VBy(>tZIc-fBP%XCtQ-Mu#|uc9=c6gnYICJ6cXKFt$VkJT(s zN}U@Rhu85sVRwH%9}Gu5IXoIHdUAd`?Dyp8=ym6KrxJZ*+iGB4$c6%7Cu|$Re(v z1-u8%eTnzM@c#G!{F$6R4gtGzyq(7x-i_)AI0FAM0p1@Z3af9mF{-x?RQd`4ZJ}Em z+I*Mb9BI|J+8BigCQK^SqzZe*5GEb{(#H8#8>1$jguQ$S`(|NpC_=v-<4YY*!Z+$_ zN5B!dPhitLcKQ5&`}h0*{UrC~2si@IihyXH2j^o<$)2q%ljE~iqI^bS + + + + AvailableLibraries + + + BinaryPath + WechatOpenSDK.framework/WechatOpenSDK + LibraryIdentifier + ios-arm64 + LibraryPath + WechatOpenSDK.framework + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + WechatOpenSDK.framework/WechatOpenSDK + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + WechatOpenSDK.framework + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/Info.plist.meta b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/Info.plist.meta new file mode 100644 index 0000000..0bd44b5 --- /dev/null +++ b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/Info.plist.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 57e483072a253ea49858dec65fa0e4fe +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/PrivacyInfo.xcprivacy b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..79bc9e2 --- /dev/null +++ b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/PrivacyInfo.xcprivacy @@ -0,0 +1,17 @@ + + + + + NSPrivacyAccessedAPITypes + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryUserDefaults + NSPrivacyAccessedAPITypeReasons + + CA92.1 + + + + + diff --git a/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/PrivacyInfo.xcprivacy.meta b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/PrivacyInfo.xcprivacy.meta new file mode 100644 index 0000000..be9479a --- /dev/null +++ b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/PrivacyInfo.xcprivacy.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4d28bcdc88c883f4f911363f0e960270 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/README.txt b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/README.txt new file mode 100644 index 0000000..3f2aab0 --- /dev/null +++ b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/README.txt @@ -0,0 +1,167 @@ +重要! +SDK2.0.5 +1. 支持模块化集成​:XCFramework 头文件引用改为标准化格式 #import ,解决路径冲突并支持 Swift/ObjC 混合开发 +2. 修复openWXApp偶现失败的问题 + +SDK2.0.4 +1.增加privacy manifest文件 +2.修复跳微信时可能卡顿的问题 + +SDK2.0.2 +1. 优化XCFramework打包方式 + +SDK2.0.1 +1. SDK支持XCFramework + +SDK2.0.0 +1. 分享能力支持内容防篡改校验 + +SDK1.9.9 +1. 授权登录支持关闭自动授权 +2. 分享支持添加签名,防止篡改 + +SDK1.9.7 +1. 适配CocoaPods + +SDK1.9.6 +1. 适配iOS 16,减少读写剪切板 + +SDK1.9.4 +1. 修复授权登录取消/拒绝时state字段没有带回 + +SDK1.9.3 +1. 新增发起二维码支付能力 + +SDK1.9.2 +1. 新增发起企微客服会话能力 + +SDK1.9.1 +1. 音乐视频分享类型增加运营H5字段 + +SDK1.8.9 +1. 增加音乐视频分享类型 + +SDK1.8.8 +1. 增加游戏直播消息类型 + +SDK1.8.7.1 +1. 修复Xcode11以下编译不通过 + +SDK1.8.7 +1. 修复iPadOS,未安装微信的情况下,因为UA问题无法授权登录 +2. 修复未安装微信的情况下, 适配了UIScene的App因为UIAlertView Crash +3. 增加Universal Link检测函数 + +SDK1.8.6.2 +1. 修改包含"UIWebView"字符的类名 + +SDK1.8.6.1 +1.短信授权登录使用的UIWebview切换成WKWebview + +SDK1.8.6 +1. 支持Universal Link拉起微信以及返回App +2. SDK移除MTA库 + +SDK1.8.5 +1. 更换MTA库:取消对剪切板的访问, 防止和其他SDK竞争导致crash +2. NSMutableArray的MTA分类方法改名,减少命名冲突 +3. 不含支付功能版本移除非税支付和医保支付接口 +4. 分享音乐支持填写歌词和高清封面图 + +SDK1.8.4 +1. 调整分享图片大小限制 +2. 新增openBusinessView接口 + +SDK1.8.3 +1. SDK增加调起微信刷卡支付接口 +2. SDK增加小程序订阅消息接口 +3. 修复小程序订阅消息接口没有resp的问题 + +SDK1.8.2 +1. SDK增加开发票授权 WXInvoiceAuthInsert +2. SDK增加非税接口 WXNontaxPay +3. SDK增加医保接口 WXPayInsurance +4. 更换MTA库 + +SDK1.8.1 +1. SDK打开小程序支持指定版本(体验,开发,正式版) +2. SDK分享小程序支持指定版本(体验,开发,正式版) +3. SDK支持输出log日志 + +SDK1.8.0 +1. SDK支持打开小程序 +2. SDK分享小程序支持shareTicket + +SDK1.7.9 +1. SDK订阅一次性消息 + +SDK1.7.8 +1 SDK分享小程序支持大图 + +SDK1.7.7 +1 增加SDK分享小程序 +2 增加选择发票接口 + +SDK1.7.6 +1. 提高稳定性 +1 修复mta崩溃 +2 新增接口支持开发者关闭mta数据统计上报 + +SDK1.7.5 +1. 提高稳定性 +2. 加快registerApp接口启动速度 + +SDK1.7.4 +1. 更新支持iOS启用 ATS(App Transport Security) +2. 需要在工程中链接CFNetwork.framework +3. 在工程配置中的”Other Linker Flags”中加入”-Objc -all_load” + +SDK1.7.3 +1. 增强稳定性,适配iOS10 +2. 修复小于32K的jpg格式缩略图设置失败的问题 + +SDK1.7.2 +1. 修复因CTTeleponyNetworkInfo引起的崩溃问题 + +SDK1.7.1 +1. 支持兼容ipv6(提升稳定性) +2. xCode Version 7.3.1 (7D1014) 编译 + +SDK1.7 +1. 支持兼容ipv6 +2. 修复若干问题增强稳定性 + +SDK1.6.3 +1. xCode7.2 构建的sdk包。 +2. 请使用xCode7.2进行编译。 +3. 需要在Build Phases中Link Security.framework +4. 修复若干小问题。 + +SDK1.6.2 +1、xCode7.1 构建的sdk包 +2、请使用xCode7.1进行编译 + +SDK1.6.1 +1、修复armv7s下,bitcode可能编译不过 +2、解决warning + +SDK1.6 +1、iOS 9系统策略更新,限制了http协议的访问,此外应用需要在“Info.plist”中将要使用的URL Schemes列为白名单,才可正常检查其他应用是否安装。 +受此影响,当你的应用在iOS 9中需要使用微信SDK的相关能力(分享、收藏、支付、登录等)时,需要在“Info.plist”里增加如下代码: +LSApplicationQueriesSchemes + +weixin + +NSAppTransportSecurity + +NSAllowsArbitraryLoads + + +2、开发者需要在工程中链接上 CoreTelephony.framework +3、解决bitcode编译不过问题 + +SDK1.5 +1、废弃safeSendReq:接口,使用sendReq:即可。 +2、新增+(BOOL) sendAuthReq:(SendAuthReq*) req viewController : (UIViewController*) viewController delegate:(id) delegate; +支持未安装微信情况下Auth,具体见WXApi.h接口描述 +3、微信开放平台新增了微信模块用户统计功能,便于开发者统计微信功能模块的用户使用和活跃情况。开发者需要在工程中链接上:SystemConfiguration.framework,libz.dylib,libsqlite3.0.dylib。 diff --git a/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/README.txt.meta b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/README.txt.meta new file mode 100644 index 0000000..93cd36b --- /dev/null +++ b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/README.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 57b94465221ab4f42a18a19053e0fb81 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64.meta b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64.meta new file mode 100644 index 0000000..a9fb58e --- /dev/null +++ b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: de497fb8101fb884ab9ec5c847af8441 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/.DS_Store b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..9b5e05da3e1454587c38e0fad881c4b1abf73e86 GIT binary patch literal 6148 zcmeHK!D`z;5S?}0MkW+|XlafMy_&>!LLl@aT=$eip(@Rx4XzZqjfkQ(mRuc-LFe{| z@+JMAzS&)u1UH9Vnowq7_Kjv|cC~NCu7-%zXps(xxW zCS>UpA)imPA~p5MEQ++WxsmG#IzeaB-CZsR!^55)9t>7Jy*wWFd;0L;XtnADFJA4x zem}X)uL|?SQLXS*T6yMi4L@PrbJb~io+nrZ4|&hj@6o)-P4Nwx>la$Th@dba3oR7f5G+eXr#T{QV;2?by%}#aEFuF^ zyA2$niw=7DT)zsoSj7tZ$nc0EM*UIqWIP-V81arvOvHv1&xmo&*bHONQ(9xx(BN8w zvn&2iF;MFh^K@~~$gz4qsb`88dSuMdSI-zX#1dXlyRZHDc2-#j9cvE zkogG0F0>fVhtnPfza(Jp(TBr@=EH@Z zUFcAp?#}#?y2B+NO&bHoz*h#O_oI~L{y+G>|5qnd#(**KKN)bv+GVZEXA5`h%u~u; t8*$umh=^bAaT>yjUd8m4t9X+`h4x4$#3W$ukrs;m5l|XT83TXHzz1=eV)g(4 literal 0 HcmV?d00001 diff --git a/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers.meta b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers.meta new file mode 100644 index 0000000..8b2f952 --- /dev/null +++ b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b3792e453c9ea8749af7930a55a592b3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WXApi.h b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WXApi.h new file mode 100644 index 0000000..879c505 --- /dev/null +++ b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WXApi.h @@ -0,0 +1,231 @@ +// +// WXApi.h +// 所有Api接口 +// +// Created by Wechat on 12-2-28. +// Copyright (c) 2012年 Tencent. All rights reserved. +// + +#import +#import "WXApiObject.h" + +NS_ASSUME_NONNULL_BEGIN + + +typedef BOOL(^WXGrantReadPasteBoardPermissionCompletion)(void); + + +#pragma mark - WXApiDelegate +/*! @brief 接收并处理来自微信终端程序的事件消息 + * + * 接收并处理来自微信终端程序的事件消息,期间微信界面会切换到第三方应用程序。 + * WXApiDelegate 会在handleOpenURL:delegate:中使用并触发。 + */ +@protocol WXApiDelegate +@optional + +/*! @brief 收到一个来自微信的请求,第三方应用程序处理完后调用sendResp向微信发送结果 + * + * 收到一个来自微信的请求,异步处理完成后必须调用sendResp发送处理结果给微信。 + * 可能收到的请求有GetMessageFromWXReq、ShowMessageFromWXReq等。 + * @param req 具体请求内容,是自动释放的 + */ +- (void)onReq:(BaseReq*)req; + + + +/*! @brief 发送一个sendReq后,收到微信的回应 + * + * 收到一个来自微信的处理结果。调用一次sendReq后会收到onResp。 + * 可能收到的处理结果有SendMessageToWXResp、SendAuthResp等。 + * @param resp具体的回应内容,是自动释放的 + */ +- (void)onResp:(BaseResp*)resp; + +/* ! @brief 用于在iOS16以及以上系统上,控制OpenSDK是否读取剪切板中微信传递的数据以及读取的时机 + * 在iOS16以及以上系统,在SDK需要读取剪切板中微信写入的数据时,会回调该方法。没有实现默认会直接读取微信通过剪切板传递过来的数据 + * 注意: + * 1. 只在iOS16以及以上的系统版本上回调; + * 2. 不实现时,OpenSDK会直接调用读取剪切板接口,读取微信传递过来的数据; + * 3. 若实现该方法:开发者需要通过调用completion(), 支持异步,通知SDK允许读取剪切板中微信传递的数据, + * 不调用completion()则代表不授权OpenSDK读取剪切板,会导致收不到onReq:, onResp:回调,无法后续业务流程。请谨慎使用 + * 4. 不要长时间持有completion不释放,可能会导致内存泄漏。 + */ +- (void)onNeedGrantReadPasteBoardPermissionWithURL:(nonnull NSURL *)openURL completion:(nonnull WXGrantReadPasteBoardPermissionCompletion)completion; + +@end + +#pragma mark - WXApiLogDelegate + +@protocol WXApiLogDelegate + +- (void)onLog:(NSString*)log logLevel:(WXLogLevel)level; + +@end + + +#pragma mark - WXApi + +/*! @brief 微信Api接口函数类 + * + * 该类封装了微信终端SDK的所有接口 + */ +@interface WXApi : NSObject + +/*! @brief WXApi的成员函数,向微信终端程序注册第三方应用。 + * + * 需要在每次启动第三方应用程序时调用。 + * @attention 请保证在主线程中调用此函数 + * @param appid 微信开发者ID + * @param universalLink 微信开发者Universal Link + * @return 成功返回YES,失败返回NO。 + */ ++ (BOOL)registerApp:(NSString *)appid universalLink:(NSString *)universalLink; + + +/*! @brief 处理旧版微信通过URL启动App时传递的数据 + * + * 需要在 application:openURL:sourceApplication:annotation:或者application:handleOpenURL中调用。 + * @param url 微信启动第三方应用时传递过来的URL + * @param delegate WXApiDelegate对象,用来接收微信触发的消息。 + * @return 成功返回YES,失败返回NO。 + */ ++ (BOOL)handleOpenURL:(NSURL *)url delegate:(nullable id)delegate; + + +/*! @brief 处理微信通过Universal Link启动App时传递的数据 + * + * 需要在 application:continueUserActivity:restorationHandler:中调用。 + * @param userActivity 微信启动第三方应用时系统API传递过来的userActivity + * @param delegate WXApiDelegate对象,用来接收微信触发的消息。 + * @return 成功返回YES,失败返回NO。 + */ ++ (BOOL)handleOpenUniversalLink:(NSUserActivity *)userActivity delegate:(nullable id)delegate; + + +/*! @brief 检查微信是否已被用户安装 + * + * @return 微信已安装返回YES,未安装返回NO。 + */ ++ (BOOL)isWXAppInstalled; + + + +/*! @brief 判断当前微信的版本是否支持OpenApi + * + * @return 支持返回YES,不支持返回NO。 + */ ++ (BOOL)isWXAppSupportApi; + + +/*! @brief 判断当前微信的版本是否支持分享微信状态功能 + * + * @attention 需在工程LSApplicationQueriesSchemes配置中添加weixinStateAPI + * @return 支持返回YES,不支持返回NO。 + */ ++ (BOOL)isWXAppSupportStateAPI; + + +#ifndef BUILD_WITHOUT_PAY +/*! @brief 判断当前微信的版本是否支持二维码拉起微信支付 + * + * @attention 需在工程LSApplicationQueriesSchemes配置中添加weixinQRCodePayAPI + * @return 支持返回YES,不支持返回NO。 + */ ++ (BOOL)isWXAppSupportQRCodePayAPI; + +#endif + + +/*! @brief 获取微信的itunes安装地址 + * + * @return 微信的安装地址字符串。 + */ ++ (NSString *)getWXAppInstallUrl; + + + +/*! @brief 获取当前微信SDK的版本号 + * + * @return 返回当前微信SDK的版本号 + */ ++ (NSString *)getApiVersion; + + + +/*! @brief 打开微信 + * + * @return 成功返回YES,失败返回NO。 + */ ++ (BOOL)openWXApp; + + + +/*! @brief 发送请求到微信,等待微信返回onResp + * + * 函数调用后,会切换到微信的界面。第三方应用程序等待微信返回onResp。微信在异步处理完成后一定会调用onResp。支持以下类型 + * SendAuthReq、SendMessageToWXReq、PayReq等。 + * @param req 具体的发送请求。 + * @param completion 调用结果回调block + */ ++ (void)sendReq:(BaseReq *)req completion:(void (^ __nullable)(BOOL success))completion; + +/*! @brief 收到微信onReq的请求,发送对应的应答给微信,并切换到微信界面 + * + * 函数调用后,会切换到微信的界面。第三方应用程序收到微信onReq的请求,异步处理该请求,完成后必须调用该函数。可能发送的相应有 + * GetMessageFromWXResp、ShowMessageFromWXResp等。 + * @param resp 具体的应答内容 + * @param completion 调用结果回调block + */ ++ (void)sendResp:(BaseResp*)resp completion:(void (^ __nullable)(BOOL success))completion; + + +/*! @brief 发送Auth请求到微信,支持用户没安装微信,等待微信返回onResp + * + * 函数调用后,会切换到微信的界面。第三方应用程序等待微信返回onResp。微信在异步处理完成后一定会调用onResp。支持SendAuthReq类型。 + * @param req 具体的发送请求。 + * @param viewController 当前界面对象。 + * @param delegate WXApiDelegate对象,用来接收微信触发的消息。 + * @param completion 调用结果回调block + */ ++ (void)sendAuthReq:(SendAuthReq *)req viewController:(UIViewController*)viewController delegate:(nullable id)delegate completion:(void (^ __nullable)(BOOL success))completion; + + +/*! @brief 测试函数,用于排查当前App通过Universal Link方式分享到微信的流程 + 注意1: 调用自检函数之前必须要先调用registerApp:universalLink接口, 并确认调用成功 + 注意2: 自检过程中会有Log产生,可以先调用startLogByLevel函数,根据Log排查问题 + 注意3: 会多次回调block + 注意4: 仅用于新接入SDK时调试使用,请勿在正式环境的调用 + * + * 当completion回调的step为WXULCheckStepFinal时,表示检测通过,Universal Link接入成功 + * @param completion 回调Block + */ ++ (void)checkUniversalLinkReady:(nonnull WXCheckULCompletion)completion; + + +/*! @brief WXApi的成员函数,接受微信的log信息。byBlock + 注意1:SDK会强引用这个block,注意不要导致内存泄漏,注意不要导致内存泄漏 + 注意2:调用过一次startLog by block之后,如果再调用一次任意方式的startLoad,会释放上一次logBlock,不再回调上一个logBlock + * + * @param level 打印log的级别 + * @param logBlock 打印log的回调block + */ + ++ (void)startLogByLevel:(WXLogLevel)level logBlock:(WXLogBolock)logBlock; + +/*! @brief WXApi的成员函数,接受微信的log信息。byDelegate + 注意1:sdk会弱引用这个delegate,这里可加任意对象为代理,不需要与WXApiDelegate同一个对象 + 注意2:调用过一次startLog by delegate之后,再调用一次任意方式的startLoad,不会再回调上一个logDelegate对象 + * @param level 打印log的级别 + * @param logDelegate 打印log的回调代理, + */ ++ (void)startLogByLevel:(WXLogLevel)level logDelegate:(id)logDelegate; + +/*! @brief 停止打印log,会清理block或者delegate为空,释放block + * @param + */ ++ (void)stopLog; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WXApi.h.meta b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WXApi.h.meta new file mode 100644 index 0000000..5d346a5 --- /dev/null +++ b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WXApi.h.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3e20125d013b8b04580b7ef4a73cbd98 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WXApiObject.h b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WXApiObject.h new file mode 100644 index 0000000..85b6457 --- /dev/null +++ b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WXApiObject.h @@ -0,0 +1,1410 @@ +// +// MMApiObject.h +// Api对象,包含所有接口和对象数据定义 +// +// Created by Wechat on 12-2-28. +// Copyright (c) 2012年 Tencent. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/*! @brief 错误码 + * + */ +enum WXErrCode { + WXSuccess = 0, /**< 成功 */ + WXErrCodeCommon = -1, /**< 普通错误类型 */ + WXErrCodeUserCancel = -2, /**< 用户点击取消并返回 */ + WXErrCodeSentFail = -3, /**< 发送失败 */ + WXErrCodeAuthDeny = -4, /**< 授权失败 */ + WXErrCodeUnsupport = -5, /**< 微信不支持 */ +}; + + + +/*! @brief 请求发送场景 + * + */ +enum WXScene { + WXSceneSession = 0, /**< 聊天界面 */ + WXSceneTimeline = 1, /**< 朋友圈 */ + WXSceneFavorite = 2, /**< 收藏 */ + WXSceneSpecifiedSession = 3, /**< 指定联系人 */ + WXSceneState = 4, /**< 状态 */ +}; + + +enum WXAPISupport { + WXAPISupportSession = 0, +}; + + + +/*! @brief 跳转profile类型 + * + */ +enum WXBizProfileType { + WXBizProfileType_Normal = 0, //**< 普通公众号 */ + WXBizProfileType_Device = 1, //**< 硬件公众号 */ +}; + +/*! @brief 分享小程序类型 + * + */ +typedef NS_ENUM(NSUInteger, WXMiniProgramType) { + WXMiniProgramTypeRelease = 0, //**< 正式版 */ + WXMiniProgramTypeTest = 1, //**< 开发版 */ + WXMiniProgramTypePreview = 2, //**< 体验版 */ +}; + +/*! @brief 跳转mp网页类型 + * + */ +enum WXMPWebviewType { + WXMPWebviewType_Ad = 0, /**< 广告网页 **/ +}; + +/*! @brief log的级别 + * + */ +typedef NS_ENUM(NSInteger,WXLogLevel) { + WXLogLevelNormal = 0, // 打印日常的日志 + WXLogLevelDetail = 1, // 打印详细的日志 +}; + + +/*! @brief 打印回调的block + * + */ +typedef void(^WXLogBolock)(NSString *log); + +/*! @brief 微信Universal Link检查函数 (WXApi#checkUniversalLinkReady:),检查步骤枚举值 + * + * WXULCheckStepParams 参数检测 + * WXULCheckStepSystemVersion 当前系统版本检测 + * WXULCheckStepWechatVersion 微信客户端版本检测 + * WXULCheckStepSDKInnerOperation 微信SDK内部操作检测 + * WXULCheckStepLaunchWechat App拉起微信检测 + * WXULCheckStepBackToCurrentApp 由微信返回当前App检测 + * WXULCheckStepFinal 最终结果 + */ +typedef NS_ENUM(NSInteger, WXULCheckStep) +{ + WXULCheckStepParams, + WXULCheckStepSystemVersion, + WXULCheckStepWechatVersion, + WXULCheckStepSDKInnerOperation, + WXULCheckStepLaunchWechat, + WXULCheckStepBackToCurrentApp, + WXULCheckStepFinal, +}; + + +#pragma mark - WXCheckULStepResult + +/*! @brief 该类为微信Universal Link检测函数结果类 +* +*/ +@interface WXCheckULStepResult : NSObject + +/** 是否成功 */ +@property(nonatomic, assign) BOOL success; +/** 当前错误信息 */ +@property(nonatomic, strong) NSString* errorInfo; +/** 修正建议 */ +@property(nonatomic, strong) NSString* suggestion; + +- (instancetype)initWithCheckResult:(BOOL)success errorInfo:(nullable NSString*)errorInfo suggestion:(nullable NSString*)suggestion; + +@end + + +/*! @brief 微信Universal Link检查函数 (WXApi#checkUniversalLinkReady:),回调Block + * + * @param step 当前检测步骤 + * @param result 检测结果 + */ +typedef void(^WXCheckULCompletion)(WXULCheckStep step, WXCheckULStepResult* result); + + +#pragma mark - BaseReq +/*! @brief 该类为微信终端SDK所有请求类的基类 + * + */ +@interface BaseReq : NSObject + +/** 请求类型 */ +@property (nonatomic, assign) int type; +/** 由用户微信号和AppID组成的唯一标识,需要校验微信用户是否换号登录时填写*/ +@property (nonatomic, copy) NSString *openID; + +@end + + + +#pragma mark - BaseResp +/*! @brief 该类为微信终端SDK所有响应类的基类 + * + */ +@interface BaseResp : NSObject +/** 错误码 */ +@property (nonatomic, assign) int errCode; +/** 错误提示字符串 */ +@property (nonatomic, copy) NSString *errStr; +/** 响应类型 */ +@property (nonatomic, assign) int type; + +@end + + + +#pragma mark - WXMediaMessage +@class WXMediaMessage; + +#ifndef BUILD_WITHOUT_PAY + +#pragma mark - PayReq +/*! @brief 第三方向微信终端发起支付的消息结构体 + * + * 第三方向微信终端发起支付的消息结构体,微信终端处理后会向第三方返回处理结果 + * @see PayResp + */ +@interface PayReq : BaseReq + +/** 商家向财付通申请的商家id */ +@property (nonatomic, copy) NSString *partnerId; +/** 预支付订单 */ +@property (nonatomic, copy) NSString *prepayId; +/** 随机串,防重发 */ +@property (nonatomic, copy) NSString *nonceStr; +/** 时间戳,防重发 */ +@property (nonatomic, assign) UInt32 timeStamp; +/** 商家根据财付通文档填写的数据和签名 */ +@property (nonatomic, copy) NSString *package; +/** 商家根据微信开放平台文档对数据做的签名 */ +@property (nonatomic, copy) NSString *sign; + +@end + + +#pragma mark - PayResp +/*! @brief 微信终端返回给第三方的关于支付结果的结构体 + * + * 微信终端返回给第三方的关于支付结果的结构体 + */ +@interface PayResp : BaseResp + +/** 财付通返回给商家的信息 */ +@property (nonatomic, copy) NSString *returnKey; + +@end + +#pragma mark - WXOfflinePay +/*! @brief 第三方向微信终端发起离线支付 + * + * 第三方向微信终端发起离线支付的消息结构体 + */ +@interface WXOfflinePayReq : BaseReq + +@end + +/*! @brief 第三方向微信终端发起离线支付返回 + * + * 第三方向微信终端发起离线支付返回的消息结构体 + */ +@interface WXOfflinePayResp : BaseResp + +@end + + +#pragma mark - WXNontaxPayReq +@interface WXNontaxPayReq:BaseReq + +@property (nonatomic, copy) NSString *urlString; + +@end + +#pragma mark - WXNontaxPayResp +@interface WXNontaxPayResp : BaseResp + +@property (nonatomic, copy) NSString *wxOrderId; + +@end + +#pragma mark - WXPayInsuranceReq +@interface WXPayInsuranceReq : BaseReq + +@property (nonatomic, copy) NSString *urlString; + +@end + +#pragma mark - WXPayInsuranceResp +@interface WXPayInsuranceResp : BaseResp + +@property (nonatomic, copy) NSString *wxOrderId; + +@end + + +#pragma mark - WXQRCodePayReq +@interface WXQRCodePayReq : BaseReq +/** 码内容 + * @note 必填,码长度必须大于0且小于10K + */ +@property (nonatomic, copy) NSString *codeContent; +/** 额外信息 + * @note 长度必须大于0且小于10K + */ +@property (nonatomic, copy) NSString *extraMsg; + +@end + +@interface WXQRCodePayResp : BaseResp +@end + +#endif + + +#pragma mark - SendAuthReq +/*! @brief 第三方程序向微信终端请求认证的消息结构 + * + * 第三方程序要向微信申请认证,并请求某些权限,需要调用WXApi的sendReq成员函数, + * 向微信终端发送一个SendAuthReq消息结构。微信终端处理完后会向第三方程序发送一个处理结果。 + * @see SendAuthResp + */ +@interface SendAuthReq : BaseReq +/** 第三方程序要向微信申请认证,并请求某些权限,需要调用WXApi的sendReq成员函数,向微信终端发送一个SendAuthReq消息结构。微信终端处理完后会向第三方程序发送一个处理结果。 + * @see SendAuthResp + * @note scope字符串长度不能超过1K + */ +@property (nonatomic, copy) NSString *scope; +/** 第三方程序本身用来标识其请求的唯一性,最后跳转回第三方程序时,由微信终端回传。 + * @note state字符串长度不能超过1K + */ +@property (nonatomic, copy) NSString *state; + +@property (nonatomic, assign) BOOL isOption1; + +/** 是否关闭自动授权 + * @note YES为关闭自动授权,每次登陆都需要用户手动授权;NO为允许自动授权 + */ +@property (nonatomic, assign) BOOL nonautomatic; + +@property (nonatomic, copy) NSString *extData; + +@end + +#pragma mark - SendAuthResp +/*! @brief 微信处理完第三方程序的认证和权限申请后向第三方程序回送的处理结果。 + * + * 第三方程序要向微信申请认证,并请求某些权限,需要调用WXApi的sendReq成员函数,向微信终端发送一个SendAuthReq消息结构。 + * 微信终端处理完后会向第三方程序发送一个SendAuthResp。 + * @see onResp + */ +@interface SendAuthResp : BaseResp +@property (nonatomic, copy, nullable) NSString *code; +/** 第三方程序发送时用来标识其请求的唯一性的标志,由第三方程序调用sendReq时传入,由微信终端回传 + * @note state字符串长度不能超过1K + * @note 在复杂度较高的应用程序中,可能会出现其他模块请求的响应对象被错误地回调到当前模块。 + * 为了避免影响其他模块,建议当前模块的开发者根据SendAuthResp的内容,采用白名单的方式进行处理。 + * 例如,SendAuthResp.state符合预期时,才对其进行处理。 + */ +@property (nonatomic, copy, nullable) NSString *state; +@property (nonatomic, copy, nullable) NSString *lang; +@property (nonatomic, copy, nullable) NSString *country; +@end + +#pragma mark - WXStateJumpInfo +/*! @brief 状态发表时的小尾巴跳转信息 + */ +@interface WXStateJumpInfo : NSObject + +@end + +#pragma mark - WXStateJumpUrlInfo +/*! @brief 状态小尾巴跳转指定url的信息 + */ +@interface WXStateJumpUrlInfo : WXStateJumpInfo +/** 跳转到指定的url + * @note 必填,url长度必须大于0且小于10K + */ +@property (nonatomic, copy) NSString *url; + +@end + +#pragma mark - WXStateJumpWXMiniProgramInfo +/*! @brief 状态小尾巴跳转指定小程序的信息 + */ +@interface WXStateJumpMiniProgramInfo : WXStateJumpInfo +/** 小程序username + * @note 必填 + */ +@property (nonatomic, copy) NSString *username; + +/** 小程序页面的路径 + * @attention 不填默认拉起小程序首页 + */ +@property (nonatomic, copy, nullable) NSString *path; + +/** 分享小程序的版本 + * @attention (正式,开发,体验) + */ +@property (nonatomic, assign) WXMiniProgramType miniProgramType; + +@end + + + +#pragma mark - WXStateJumpWXMiniProgramInfo +/*! @brief 状态小尾巴跳转指定视频号主页信息 + */ +@interface WXStateJumpChannelProfileInfo : WXStateJumpInfo +/** 视频号username + * @note 必填,username长度必须大于0且小于1K + */ +@property (nonatomic, copy) NSString *username; + + +@end + +#pragma mark - WXStateSceneDataObject +/*! @brief 场景类型额外参数基类 + */ +@interface WXSceneDataObject : NSObject + +@end + +#pragma mark - WXStateSceneDataObject +/*! @brief 状态场景类型 + * 用户填写WXStateSceneDataObject参数后,可以跳转到微信状态发表页 + */ +@interface WXStateSceneDataObject : WXSceneDataObject + +/** 状态标志的ID + * @note 选填,文本长度必须小于10K + */ +@property (nonatomic, copy) NSString *stateId; +/** 状态发表时附带的文本描述 + * @note 选填,文本长度必须小于10K + */ +@property (nonatomic, copy) NSString *stateTitle; +/** 后台校验token + * @note 选填,文本长度必须小于10K + */ +@property (nonatomic, copy) NSString *token; +/** 小尾巴跳转所需的信息 + * @note 必填,目前仅支持url跳转 + */ +@property (nonatomic, strong) WXStateJumpInfo *stateJumpDataInfo; + +@end + +#pragma mark - SendMessageToWXReq +/*! @brief 第三方程序发送消息至微信终端程序的消息结构体 + * + * 第三方程序向微信发送信息需要传入SendMessageToWXReq结构体,信息类型包括文本消息和多媒体消息, + * 分别对应于text和message成员。调用该方法后,微信处理完信息会向第三方程序发送一个处理结果。 + * @see SendMessageToWXResp + */ +@interface SendMessageToWXReq : BaseReq +/** 发送消息的文本内容 + * @note 文本长度必须大于0且小于10K + */ +@property (nonatomic, copy) NSString *text; +/** 发送消息的多媒体内容 + * @see WXMediaMessage + */ +@property (nonatomic, strong) WXMediaMessage *message; +/** 发送消息的类型,包括文本消息和多媒体消息两种,两者只能选择其一,不能同时发送文本和多媒体消息 */ +@property (nonatomic, assign) BOOL bText; +/** 发送的目标场景,可以选择发送到会话(WXSceneSession)或者朋友圈(WXSceneTimeline)。 默认发送到会话。 + * @see WXScene + */ +@property (nonatomic, assign) int scene; +/** 指定发送消息的人 + * @note WXSceneSpecifiedSession时有效 + */ +@property (nonatomic, copy, nullable) NSString *toUserOpenId; +/** 目标场景附带信息 + * @note 目前只针对状态场景 + */ +@property (nonatomic, strong) WXSceneDataObject *sceneDataObject; + +@end + +#pragma mark - SendMessageToWXResp +/*! @brief 微信终端向第三方程序返回的SendMessageToWXReq处理结果。 + * + * 第三方程序向微信终端发送SendMessageToWXReq后,微信发送回来的处理结果,该结果用SendMessageToWXResp表示。 + */ +@interface SendMessageToWXResp : BaseResp +@property(nonatomic, copy) NSString *lang; +@property(nonatomic, copy) NSString *country; +@end + +#pragma mark - GetMessageFromWXReq +/*! @brief 微信终端向第三方程序请求提供内容的消息结构体。 + * + * 微信终端向第三方程序请求提供内容,微信终端会向第三方程序发送GetMessageFromWXReq消息结构体, + * 需要第三方程序调用sendResp返回一个GetMessageFromWXResp消息结构体。 + */ +@interface GetMessageFromWXReq : BaseReq +@property (nonatomic, strong) NSString *lang; +@property (nonatomic, strong) NSString *country; +@end + + + +#pragma mark - GetMessageFromWXResp +/*! @brief 微信终端向第三方程序请求提供内容,第三方程序向微信终端返回的消息结构体。 + * + * 微信终端向第三方程序请求提供内容,第三方程序调用sendResp向微信终端返回一个GetMessageFromWXResp消息结构体。 + */ +@interface GetMessageFromWXResp : BaseResp +/** 向微信终端提供的文本内容 + @note 文本长度必须大于0且小于10K + */ +@property (nonatomic, strong) NSString *text; +/** 向微信终端提供的多媒体内容。 + * @see WXMediaMessage + */ +@property (nonatomic, strong) WXMediaMessage *message; +/** 向微信终端提供内容的消息类型,包括文本消息和多媒体消息两种,两者只能选择其一,不能同时发送文本和多媒体消息 */ +@property (nonatomic, assign) BOOL bText; +@end + + + +#pragma mark - ShowMessageFromWXReq +/*! @brief 微信通知第三方程序,要求第三方程序显示的消息结构体。 + * + * 微信需要通知第三方程序显示或处理某些内容时,会向第三方程序发送ShowMessageFromWXReq消息结构体。 + * 第三方程序处理完内容后调用sendResp向微信终端发送ShowMessageFromWXResp。 + */ +@interface ShowMessageFromWXReq : BaseReq +/** 微信终端向第三方程序发送的要求第三方程序处理的多媒体内容 + * @see WXMediaMessage + */ +@property (nonatomic, strong) WXMediaMessage *message; +@property (nonatomic, copy) NSString *lang; +@property (nonatomic, copy) NSString *country; +@end + + + +#pragma mark - ShowMessageFromWXResp +/*! @brief 微信通知第三方程序,要求第三方程序显示或处理某些消息,第三方程序处理完后向微信终端发送的处理结果。 + * + * 微信需要通知第三方程序显示或处理某些内容时,会向第三方程序发送ShowMessageFromWXReq消息结构体。 + * 第三方程序处理完内容后调用sendResp向微信终端发送ShowMessageFromWXResp。 + */ +@interface ShowMessageFromWXResp : BaseResp +@end + + +#pragma mark - LaunchFromWXReq +/*! @brief 微信终端打开第三方程序携带的消息结构体 + * + * 微信向第三方发送的结构体,第三方不需要返回 + */ +@interface LaunchFromWXReq : BaseReq +@property (nonatomic, strong) WXMediaMessage *message; +@property (nonatomic, copy) NSString *lang; +@property (nonatomic, copy) NSString *country; +@end + + +#pragma mark - OpenWebviewReq +/* ! @brief 第三方通知微信启动内部浏览器,打开指定网页 + * + * 第三方通知微信启动内部浏览器,打开指定Url对应的网页 + */ +@interface OpenWebviewReq : BaseReq +/** 需要打开的网页对应的Url + * @attention 长度不能超过1024 + */ +@property(nonatomic, copy) NSString *url; + +@end + +#pragma mark - OpenWebviewResp +/*! @brief 微信终端向第三方程序返回的OpenWebviewReq处理结果 + * + * 第三方程序向微信终端发送OpenWebviewReq后,微信发送回来的处理结果,该结果用OpenWebviewResp表示 + */ +@interface OpenWebviewResp : BaseResp + +@end + + + +#pragma mark - WXOpenBusinessWebViewReq +/*! @brief 第三方通知微信启动内部浏览器,打开指定业务的网页 + * + * + */ +@interface WXOpenBusinessWebViewReq : BaseReq + +/** 网页业务类型 + * @attention + */ +@property (nonatomic, assign) UInt32 businessType; + +/** 网页业务参数 + * @attention + */ +@property (nonatomic, strong, nullable) NSDictionary *queryInfoDic; + +@end + +#pragma mark - WXOpenBusinessWebViewResp +/*! @brief 微信终端向第三方程序返回的WXOpenBusinessWebViewResp处理结果。 + * + * 第三方程序向微信终端发送WXOpenBusinessWebViewReq后,微信发送回来的处理结果,该结果用WXOpenBusinessWebViewResp表示。 + */ +@interface WXOpenBusinessWebViewResp : BaseResp +/** 第三方程序自定义简单数据,微信终端会回传给第三方程序处理 + * @attention 长度不能超过2k + */ +@property (nonatomic, copy) NSString *result; + +/** 网页业务类型 + * @attention + */ +@property (nonatomic, assign) UInt32 businessType; + +@end + + +#pragma mark - OpenRankListReq +/* ! @brief 第三方通知微信,打开硬件排行榜 + * + * 第三方通知微信,打开硬件排行榜 + */ +@interface OpenRankListReq : BaseReq + +@end + +#pragma mark - OpenRanklistResp +/*! @brief 微信终端向第三方程序返回的OpenRankListReq处理结果。 + * + * 第三方程序向微信终端发送OpenRankListReq后,微信发送回来的处理结果,该结果用OpenRankListResp表示。 + */ +@interface OpenRankListResp : BaseResp + +@end + + +#pragma mark - WXCardItem + +@interface WXCardItem : NSObject +/** 卡id + * @attention 长度不能超过1024字节 + */ +@property (nonatomic, copy) NSString *cardId; +/** ext信息 + * @attention 长度不能超过2024字节 + */ +@property (nonatomic, copy, nullable) NSString *extMsg; +/** + * @attention 卡的状态,req不需要填。resp:0为未添加,1为已添加。 + */ +@property (nonatomic, assign) UInt32 cardState; +/** + * @attention req不需要填,chooseCard返回的。 + */ +@property (nonatomic, copy) NSString *encryptCode; +/** + * @attention req不需要填,chooseCard返回的。 + */ +@property (nonatomic, copy) NSString *appID; +@end; + +#pragma mark - WXInvoiceItem + +@interface WXInvoiceItem : NSObject +/** 卡id + * @attention 长度不能超过1024字节 + */ +@property (nonatomic, copy) NSString *cardId; +/** ext信息 + * @attention 长度不能超过2024字节 + */ +@property (nonatomic, copy, nullable) NSString *extMsg; +/** + * @attention 卡的状态,req不需要填。resp:0为未添加,1为已添加。 + */ +@property (nonatomic, assign) UInt32 cardState; +/** + * @attention req不需要填,chooseCard返回的。 + */ +@property (nonatomic, copy) NSString *encryptCode; +/** + * @attention req不需要填,chooseCard返回的。 + */ +@property (nonatomic, copy) NSString *appID; + +@end + +#pragma mark - AddCardToWXCardPackageReq +/* ! @brief 请求添加卡券至微信卡包 + * + */ + +@interface AddCardToWXCardPackageReq : BaseReq +/** 卡列表 + * @attention 个数不能超过40个 类型WXCardItem + */ +@property (nonatomic, strong) NSArray *cardAry; + +@end + + +#pragma mark - AddCardToWXCardPackageResp +/** ! @brief 微信返回第三方添加卡券结果 + * + */ + +@interface AddCardToWXCardPackageResp : BaseResp +/** 卡列表 + * @attention 个数不能超过40个 类型WXCardItem + */ +@property (nonatomic, strong) NSArray *cardAry; +@end + +#pragma mark - WXChooseCardReq +/* ! @brief 请求从微信选取卡券 + * + */ + +@interface WXChooseCardReq : BaseReq +@property (nonatomic, copy) NSString *appID; +@property (nonatomic, assign) UInt32 shopID; +@property (nonatomic, assign) UInt32 canMultiSelect; +@property (nonatomic, copy) NSString *cardType; +@property (nonatomic, copy) NSString *cardTpID; +@property (nonatomic, copy) NSString *signType; +@property (nonatomic, copy) NSString *cardSign; +@property (nonatomic, assign) UInt32 timeStamp; +@property (nonatomic, copy) NSString *nonceStr; +@end + + +#pragma mark - WXChooseCardResp +/** ! @brief 微信返回第三方请求选择卡券结果 + * + */ + +@interface WXChooseCardResp : BaseResp +@property (nonatomic, strong ) NSArray* cardAry; +@end + + +#pragma mark - WXChooseInvoiceReq +/* ! @brief 请求从微信选取发票 + * + */ +@interface WXChooseInvoiceReq : BaseReq +@property (nonatomic, copy) NSString *appID; +@property (nonatomic, assign) UInt32 shopID; +@property (nonatomic, copy) NSString *signType; +@property (nonatomic, copy) NSString *cardSign; +@property (nonatomic, assign) UInt32 timeStamp; +@property (nonatomic, copy) NSString *nonceStr; +@end + +#pragma mark - WXChooseInvoiceResp +/** ! @brief 微信返回第三方请求选择发票结果 + * + */ +@interface WXChooseInvoiceResp : BaseResp +@property (nonatomic, strong) NSArray* cardAry; +@end + +#pragma mark - WXSubscriptionReq +@interface WXSubscribeMsgReq : BaseReq +@property (nonatomic, assign) UInt32 scene; +@property (nonatomic, copy) NSString *templateId; +@property (nonatomic, copy, nullable) NSString *reserved; +@end + +#pragma mark - WXSubscriptionReq +@interface WXSubscribeMsgResp : BaseResp + +@property (nonatomic, copy) NSString *templateId; +@property (nonatomic, assign) UInt32 scene; +@property (nonatomic, copy) NSString *action; +@property (nonatomic, copy) NSString *reserved; +@property (nonatomic, copy, nullable) NSString *openId; + +@end + +#pragma mark - WXSubscribeMiniProgramMsg +/** ! @brief 第三方请求订阅小程序消息 + * + */ +@interface WXSubscribeMiniProgramMsgReq : BaseReq +@property (nonatomic, copy) NSString *miniProgramAppid; +@end + +#pragma mark - WXSubscriptionReq +@interface WXSubscribeMiniProgramMsgResp : BaseResp + +@property(nonatomic, copy) NSString *openId; // 小程序openid +@property(nonatomic, copy) NSString *unionId; // unionId +@property(nonatomic, copy) NSString *nickName; // 用户昵称 + +@end + +#pragma mark - WXinvoiceAuthInsertReq +@interface WXInvoiceAuthInsertReq : BaseReq + +@property (nonatomic, copy) NSString *urlString; + +@end + +#pragma mark - WXinvoiceAuthInsertResp + +@interface WXInvoiceAuthInsertResp : BaseResp + +@property (nonatomic, copy) NSString *wxOrderId; + +@end + +#pragma mark - WXMediaMessage + +/*! @brief 多媒体消息结构体 + * + * 用于微信终端和第三方程序之间传递消息的多媒体消息内容 + */ +@interface WXMediaMessage : NSObject + ++ (WXMediaMessage *)message; + +/** 标题 + * @note 长度不能超过512字节 + */ +@property (nonatomic, copy) NSString *title; +/** 描述内容 + * @note 长度不能超过1K + */ +@property (nonatomic, copy) NSString *description; +/** 缩略图数据 + * @note 大小不能超过64K + */ +@property (nonatomic, strong, nullable) NSData *thumbData; +/** + * @note 长度不能超过64字节 + */ +@property (nonatomic, copy, nullable) NSString *mediaTagName; +/** + * + */ +@property (nonatomic, copy, nullable) NSString *messageExt; +@property (nonatomic, copy, nullable) NSString *messageAction; +/** + * 多媒体数据对象,可以为WXImageObject,WXMusicObject,WXVideoObject,WXWebpageObject等。 + */ +@property (nonatomic, strong) id mediaObject; + +/** 缩略图的hash值 + * @note 使用sha256得到,用于计算签名 + */ +@property (nonatomic, copy, nullable) NSString *thumbDataHash; + +/** 消息签名 + * @note 用于校验消息体是否被篡改过 + */ +@property (nonatomic, copy, nullable) NSString *msgSignature; + + +/*! @brief 设置消息缩略图的方法 + * + * @param image 缩略图 + * @note 大小不能超过256K + */ +- (void)setThumbImage:(UIImage *)image; + +@end + + + +#pragma mark - WXImageObject +/*! @brief 多媒体消息中包含的图片数据对象 + * + * 微信终端和第三方程序之间传递消息中包含的图片数据对象。 + * @note imageData成员不能为空 + * @see WXMediaMessage + */ +@interface WXImageObject : NSObject +/*! @brief 返回一个WXImageObject对象 + * + * @note 返回的WXImageObject对象是自动释放的 + */ ++ (WXImageObject *)object; + +/** 图片真实数据内容 + * @note 大小不能超过25M + */ +@property (nonatomic, strong) NSData *imageData; + +/** 图片数据的hash值 + * @note 使用sha256得到,用于计算签名 + */ +@property (nonatomic, copy, nullable) NSString *imgDataHash; + +/** 分享的图片消息是否要带小程序入口,若 'entranceMiniProgramUsername' 非空则显示 + * 仅部分小程序类目可用 + * @note 本字段为空则发送普通app图片消息 + */ +@property (nonatomic, copy, nullable) NSString *entranceMiniProgramUsername; + +/** 分享的图片消息显示的小程序入口可以跳转的小程序路径 + * 仅当 'entranceMiniProgramUsername' 非空时生效 + */ +@property (nonatomic, copy, nullable) NSString *entranceMiniProgramPath; + +@end + + +#pragma mark - WXMusicObject +/*! @brief 多媒体消息中包含的音乐数据对象 + * + * 微信终端和第三方程序之间传递消息中包含的音乐数据对象。 + * @note musicUrl和musicLowBandUrl成员不能同时为空。 + * @see WXMediaMessage + */ +@interface WXMusicObject : NSObject +/*! @brief 返回一个WXMusicObject对象 + * + * @note 返回的WXMusicObject对象是自动释放的 + */ ++ (WXMusicObject *)object; + +/** 音乐网页的url地址 + * @note 长度不能超过10K + */ +@property (nonatomic, copy) NSString *musicUrl; +/** 音乐lowband网页的url地址 + * @note 长度不能超过10K + */ +@property (nonatomic, copy) NSString *musicLowBandUrl; +/** 音乐数据url地址 + * @note 长度不能超过10K + */ +@property (nonatomic, copy) NSString *musicDataUrl; + +/**音乐lowband数据url地址 + * @note 长度不能超过10K + */ +@property (nonatomic, copy) NSString *musicLowBandDataUrl; + +/**音乐封面图Url + * @note 长度不能超过10K + */ +@property (nonatomic, copy) NSString *songAlbumUrl; + +/**歌词信息 LRC格式 + * @note 长度不能超过32K + */ +@property (nonatomic, copy, nullable) NSString *songLyric; +@end + + + +#pragma mark - WXMusicVideoObject + +@interface WXMusicVipInfo : NSObject + +/**付费歌曲的id + * @note 长度不能超过32K + */ +@property (nonatomic, copy) NSString *musicId; + +@end + + +@interface WXMusicVideoObject : NSObject + +/*! @brief 返回一个WXMusicVideoObject对象 + * + * @note 返回的WXMusicVideoObject对象是自动释放的 + */ ++ (WXMusicVideoObject *)object; + +/** 音乐网页的url地址 + * @note 长度不能超过10K,不能为空 + */ +@property (nonatomic, copy) NSString *musicUrl; + +/** 音乐数据url地址 + * @note 长度不能超过10K,不能为空 + */ +@property (nonatomic, copy) NSString *musicDataUrl; + +/**歌手名 + * @note 长度不能超过1k,不能为空 + */ +@property (nonatomic, copy) NSString *singerName; + +/** + * @note 音乐时长, 单位毫秒 + */ +@property (nonatomic, assign) UInt32 duration; + +/**歌词信息 LRC格式 + * @note 长度不能超过32K + */ +@property (nonatomic, copy) NSString *songLyric; + +/**高清封面图 + * @note 大小不能超过1M + */ +@property (nonatomic, strong) NSData *hdAlbumThumbData; + +/** 高清封面图数据的hash值 + * @note 使用sha256得到,用于计算签名 + */ +@property (nonatomic, copy, nullable) NSString *hdAlbumThumbFileHash; + +/**音乐专辑名称 + * @note 长度不能超过1k + */ +@property (nonatomic, copy, nullable) NSString *albumName; + +/**音乐流派 + * @note 长度不能超过1k + */ +@property (nonatomic, copy, nullable) NSString *musicGenre; + +/**发行时间 + * @note Unix时间戳,单位为秒 + */ +@property (nonatomic, assign) UInt64 issueDate; + +/**音乐标识符 + * @note 长度不能超过1K,从微信跳回应用时会带上 + */ +@property (nonatomic, copy, nullable) NSString *identification; + +/**运营H5地址 + * @note 选填,建议填写,用户进入歌曲详情页将展示内嵌的运营H5,可展示该歌曲的相关评论、歌曲推荐等内容,不可诱导下载、分享等。 + */ +@property (nonatomic, copy, nullable) NSString *musicOperationUrl; + +/** 付费歌曲相关信息 + * @note 选填,如果歌曲是需要付费的,那么将付费歌曲id等信息封装在内。 + */ +@property (nonatomic, strong) WXMusicVipInfo *musicVipInfo; + +@end + + + +#pragma mark - WXVideoObject +/*! @brief 多媒体消息中包含的视频数据对象 + * + * 微信终端和第三方程序之间传递消息中包含的视频数据对象。 + * @note videoUrl和videoLowBandUrl不能同时为空。 + * @see WXMediaMessage + */ +@interface WXVideoObject : NSObject +/*! @brief 返回一个WXVideoObject对象 + * + * @note 返回的WXVideoObject对象是自动释放的 + */ ++ (WXVideoObject *)object; + +/** 视频网页的url地址 + * @note 长度不能超过10K + */ +@property (nonatomic, copy) NSString *videoUrl; +/** 视频lowband网页的url地址 + * @note 长度不能超过10K + */ +@property (nonatomic, copy) NSString *videoLowBandUrl; + +@end + + + +#pragma mark - WXWebpageObject +/*! @brief 多媒体消息中包含的网页数据对象 + * + * 微信终端和第三方程序之间传递消息中包含的网页数据对象。 + * @see WXMediaMessage + */ +@interface WXWebpageObject : NSObject +/*! @brief 返回一个WXWebpageObject对象 + * + * @note 返回的WXWebpageObject对象是自动释放的 + */ ++ (WXWebpageObject *)object; + +/** 网页的url地址 + * @note 不能为空且长度不能超过10K + */ +@property (nonatomic, copy) NSString *webpageUrl; + +/**是否是私密消息 + */ +@property (nonatomic, assign) BOOL isSecretMessage; + +/** 业务所需的额外信息 */ +@property (nonatomic, strong, nullable) NSDictionary *extraInfoDic; + +@end + + + +#pragma mark - WXAppExtendObject +/*! @brief 多媒体消息中包含的App扩展数据对象 + * + * 第三方程序向微信终端发送包含WXAppExtendObject的多媒体消息, + * 微信需要处理该消息时,会调用该第三方程序来处理多媒体消息内容。 + * @note url,extInfo和fileData不能同时为空 + * @see WXMediaMessage + */ +@interface WXAppExtendObject : NSObject +/*! @brief 返回一个WXAppExtendObject对象 + * + * @note 返回的WXAppExtendObject对象是自动释放的 + */ ++ (WXAppExtendObject *)object; + +/** 若第三方程序不存在,微信终端会打开该url所指的App下载地址 + * @note 长度不能超过10K + */ +@property (nonatomic, copy) NSString *url; +/** 第三方程序自定义简单数据,微信终端会回传给第三方程序处理 + * @note 长度不能超过2K + */ +@property (nonatomic, copy, nullable) NSString *extInfo; +/** App文件数据,该数据发送给微信好友,微信好友需要点击后下载数据,微信终端会回传给第三方程序处理 + * @note 大小不能超过10M + */ +@property (nonatomic, strong, nullable) NSData *fileData; + +@end + + + +#pragma mark - WXEmoticonObject +/*! @brief 多媒体消息中包含的表情数据对象 + * + * 微信终端和第三方程序之间传递消息中包含的表情数据对象。 + * @see WXMediaMessage + */ +@interface WXEmoticonObject : NSObject + +/*! @brief 返回一个WXEmoticonObject对象 + * + * @note 返回的WXEmoticonObject对象是自动释放的 + */ ++ (WXEmoticonObject *)object; + +/** 表情真实数据内容 + * @note 大小不能超过10M + */ +@property (nonatomic, strong) NSData *emoticonData; + +@end + + + +#pragma mark - WXFileObject +/*! @brief 多媒体消息中包含的文件数据对象 + * + * @see WXMediaMessage + */ +@interface WXFileObject : NSObject + +/*! @brief 返回一个WXFileObject对象 + * + * @note 返回的WXFileObject对象是自动释放的 + */ ++ (WXFileObject *)object; + +/** 文件后缀名 + * @note 长度不超过64字节 + */ +@property (nonatomic, copy) NSString *fileExtension; + +/** 文件真实数据内容 + * @note 大小不能超过10M + */ +@property (nonatomic, strong) NSData *fileData; + +@end + + +#pragma mark - WXLocationObject +/*! @brief 多媒体消息中包含的地理位置数据对象 + * + * 微信终端和第三方程序之间传递消息中包含的地理位置数据对象。 + * @see WXMediaMessage + */ +@interface WXLocationObject : NSObject + +/*! @brief 返回一个WXLocationObject对象 + * + * @note 返回的WXLocationObject对象是自动释放的 + */ ++ (WXLocationObject *)object; + +/** 地理位置信息 + * @note 经纬度 + */ +@property (nonatomic, assign) double lng; //经度 +@property (nonatomic, assign) double lat; //纬度 + +@end + +#pragma mark - WXTextObject +/*! @brief 多媒体消息中包含的文本数据对象 + * + * 微信终端和第三方程序之间传递消息中包含的文本数据对象。 + * @see WXMediaMessage + */ +@interface WXTextObject : NSObject + +/*! @brief 返回一个WXTextObject对象 + * + * @note 返回的WXTextObject对象是自动释放的 + */ ++ (WXTextObject *)object; + +/** 地理位置信息 + * @note 文本内容 + */ +@property (nonatomic, copy) NSString *contentText; + +@end + +#pragma mark - WXMiniProgramObject + +@interface WXMiniProgramObject : NSObject + +/*! @brief WXMiniProgramObject对象 + * + * @note 返回的WXMiniProgramObject对象是自动释放的 + */ ++ (WXMiniProgramObject *)object; + +/** 低版本网页链接 + * @attention 长度不能超过1024字节 + */ +@property (nonatomic, copy) NSString *webpageUrl; + +/** 小程序username */ +@property (nonatomic, copy) NSString *userName; + +/** 小程序页面的路径 + * @attention 不填默认拉起小程序首页 + */ +@property (nonatomic, copy, nullable) NSString *path; + +/** 小程序新版本的预览图 + * @attention 大小不能超过128k + */ +@property (nonatomic, strong, nullable) NSData *hdImageData; + +/** 是否使用带 shareTicket 的转发 */ +@property (nonatomic, assign) BOOL withShareTicket; + +/** 分享小程序的版本 + * @attention (正式,开发,体验) + */ +@property (nonatomic, assign) WXMiniProgramType miniProgramType; + +/** 是否禁用转发 */ +@property (nonatomic, assign) BOOL disableForward; + +@property (nonatomic, assign) BOOL isUpdatableMessage; + +@property (nonatomic, assign) BOOL isSecretMessage; + + +/** 业务所需的额外信息 */ +@property (nonatomic, strong, nullable) NSDictionary *extraInfoDic; + +@end + +#pragma mark - WXGameLiveObject + +/*! @brief WXGameLiveObject对象 + * + * @note 游戏直播消息类型 + */ + +@interface WXGameLiveObject : NSObject + ++ (WXGameLiveObject *)object; + +/** 业务所需的额外信息 */ +@property (nonatomic, strong, nullable) NSDictionary *extraInfoDic; + +@end + +@interface WXNativeGamePageObject : NSObject + +/** 是否为视频类型 + */ +@property (nonatomic, assign) BOOL isVideo; + +/** 视频时长 + @note 当为视频类型时,必填;单位为秒 + */ +@property (nonatomic, assign) UInt32 videoDuration; + +/** 透传字段 + @note 长度限制为100K + */ +@property (nonatomic, copy) NSString *shareData; + +/** 缩略图 + @note 大小限制为256K + */ +@property (nonatomic, strong) NSData *gameThumbData; + ++ (WXNativeGamePageObject *)object; + +@end + +#pragma mark - WXLaunchMiniProgramReq + +/*! @brief WXLaunchMiniProgramReq对象, 可实现通过sdk拉起微信小程序 + * + * @note 返回的WXLaunchMiniProgramReq对象是自动释放的 + */ +@interface WXLaunchMiniProgramReq : BaseReq + ++ (WXLaunchMiniProgramReq *)object; + +/** 小程序username */ +@property (nonatomic, copy) NSString *userName; + +/** 小程序页面的路径 + * @attention 不填默认拉起小程序首页 + */ +@property (nonatomic, copy, nullable) NSString *path; + +/** 分享小程序的版本 + * @attention (正式,开发,体验) + */ +@property (nonatomic, assign) WXMiniProgramType miniProgramType; + +/** ext信息 + * @attention json格式 + */ +@property (nonatomic, copy, nullable) NSString *extMsg; + +/** extDic + * @attention 字典,可存放图片等比较大的数据 + */ +@property (nonatomic, copy, nullable) NSDictionary *extDic; + +@end + +#pragma mark - WXLaunchMiniProgramResp +/*! @brief 微信终端向第三方程序返回的WXLaunchMiniProgramReq处理结果。 + * + * 第三方程序向微信终端发送WXLaunchMiniProgramReq后,微信发送回来的处理结果,该结果用WXLaunchMiniProgramResp表示。 + */ +@interface WXLaunchMiniProgramResp : BaseResp + +@property (nonatomic, copy, nullable) NSString *extMsg; + +@end + + +#pragma mark - WXOpenBusinessViewReq +/*! @brief WXOpenBusinessViewReq对象, 可实现第三方通知微信启动,打开业务页面 + * + * @note 返回的WXOpenBusinessViewReq对象是自动释放的 + */ + +@interface WXOpenBusinessViewReq : BaseReq + ++ (WXOpenBusinessViewReq *)object; + +/** 业务类型 + */ +@property (nonatomic, copy) NSString *businessType; + +/** 业务参数 + */ +@property (nonatomic, copy, nullable) NSString *query; + +/** ext信息 + * @note 选填,json格式 + */ +@property (nonatomic, copy, nullable) NSString *extInfo; + +/** extData数据 + * @note + */ +@property (nonatomic, strong, nullable) NSData *extData; +@end + + +@interface WXOpenBusinessViewResp : BaseResp + +/** 业务类型 + */ +@property (nonatomic, copy) NSString *businessType; + +/** 业务返回数据 + */ +@property (nonatomic, copy, nullable) NSString *extMsg; + +@end + +#pragma mark - WXOpenCustomerServiceReq +@interface WXOpenCustomerServiceReq : BaseReq + ++ (WXOpenCustomerServiceReq *)object; + +/**企微客服发起流程 url + */ +@property (nonatomic, copy, nullable) NSString *url; + +/**企业 id + */ +@property (nonatomic, copy, nullable) NSString *corpid; + +@end + +@interface WXOpenCustomerServiceResp : BaseResp + +/** 业务返回数据 + */ +@property (nonatomic, copy, nullable) NSString *extMsg; + +@end + + +#pragma mark - WXChannelStartLiveReq + +@interface WXChannelStartLiveReq : BaseReq + ++ (WXChannelStartLiveReq *)object; + +/** 必填,直播业务数据(json格式) + */ +@property (nonatomic, copy) NSString *liveJsonInfo; + +@end + +@interface WXChannelStartLiveResp : BaseResp + +/** 业务返回数据 + */ +@property (nonatomic, copy, nullable) NSString *extMsg; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WXApiObject.h.meta b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WXApiObject.h.meta new file mode 100644 index 0000000..6b5e1d1 --- /dev/null +++ b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WXApiObject.h.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 95155186bc99d6349aab610f10d57966 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WechatAuthSDK.h b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WechatAuthSDK.h new file mode 100644 index 0000000..308aaea --- /dev/null +++ b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WechatAuthSDK.h @@ -0,0 +1,68 @@ +// +// WechatAuthSDK.h +// WechatAuthSDK +// +// Created by 李凯 on 13-11-29. +// Copyright (c) 2013年 Tencent. All rights reserved. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +enum AuthErrCode { + WechatAuth_Err_Ok = 0, //Auth成功 + WechatAuth_Err_NormalErr = -1, //普通错误 + WechatAuth_Err_NetworkErr = -2, //网络错误 + WechatAuth_Err_GetQrcodeFailed = -3, //获取二维码失败 + WechatAuth_Err_Cancel = -4, //用户取消授权 + WechatAuth_Err_Timeout = -5, //超时 +}; + +@protocol WechatAuthAPIDelegate +@optional + +- (void)onAuthGotQrcode:(UIImage *)image; //得到二维码 +- (void)onQrcodeScanned; //二维码被扫描 +- (void)onAuthFinish:(int)errCode AuthCode:(nullable NSString *)authCode; //成功登录 + +@end + +@interface WechatAuthSDK : NSObject{ + NSString *_sdkVersion; + __weak id _delegate; +} + +@property(nonatomic, weak, nullable) id delegate; +@property(nonatomic, readonly) NSString *sdkVersion; //authSDK版本号 + +/*! @brief 发送登录请求,等待WechatAuthAPIDelegate回调 + * + * @param appId 微信开发者ID + * @param nonceStr 一个随机的尽量不重复的字符串,用来使得每次的signature不同 + * @param timeStamp 时间戳 + * @param scope 应用授权作用域,拥有多个作用域用逗号(,)分隔 + * @param signature 签名 + * @param schemeData 会在扫码后拼在scheme后 + * @return 成功返回YES,失败返回NO + 注:该实现只保证同时只有一个Auth在运行,Auth未完成或未Stop再次调用Auth接口时会返回NO。 + */ + +- (BOOL)Auth:(NSString *)appId + nonceStr:(NSString *)nonceStr + timeStamp:(NSString *)timeStamp + scope:(NSString *)scope + signature:(NSString *)signature + schemeData:(nullable NSString *)schemeData; + + +/*! @brief 暂停登录请求 + * + * @return 成功返回YES,失败返回NO。 + */ +- (BOOL)StopAuth; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WechatAuthSDK.h.meta b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WechatAuthSDK.h.meta new file mode 100644 index 0000000..53ca67a --- /dev/null +++ b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WechatAuthSDK.h.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8dde9b17a4cf713409124d27b2681314 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WechatOpenSDK.h b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WechatOpenSDK.h new file mode 100644 index 0000000..979e5e9 --- /dev/null +++ b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WechatOpenSDK.h @@ -0,0 +1,9 @@ +// WechatOpenSDK.h +// +// Created by Wechat. +// Copyright (c) 2012年 Tencent. All rights reserved. +// +#import +#import +#import + diff --git a/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WechatOpenSDK.h.meta b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WechatOpenSDK.h.meta new file mode 100644 index 0000000..a67d812 --- /dev/null +++ b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Headers/WechatOpenSDK.h.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 04da548748747ba4c8e3563620f7d6df +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Info.plist b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Info.plist new file mode 100644 index 0000000..45d6068 --- /dev/null +++ b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Info.plist @@ -0,0 +1,15 @@ + + + + CFBundleIdentifier + com.tencent.WechatOpenSDK + CFBundleVersion + 1.0.0 + CFBundleShortVersionString + 1.0 + MinimumOSVersion + 12.0 + CFBundleExecutable + WechatOpenSDK + + \ No newline at end of file diff --git a/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Info.plist.meta b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Info.plist.meta new file mode 100644 index 0000000..457fcfb --- /dev/null +++ b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Info.plist.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 55c905ff183bebe45b0f81558df25f06 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Modules.meta b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Modules.meta new file mode 100644 index 0000000..4cef5e8 --- /dev/null +++ b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Modules.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9129bdfd6de87a04ebd9dda3aedd096c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Modules/module.modulemap b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Modules/module.modulemap new file mode 100644 index 0000000..3ddbeb0 --- /dev/null +++ b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Modules/module.modulemap @@ -0,0 +1,5 @@ +framework module WechatOpenSDK { + umbrella header "WechatOpenSDK.h" + export * + link "WechatOpenSDK" +} diff --git a/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Modules/module.modulemap.meta b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Modules/module.modulemap.meta new file mode 100644 index 0000000..01cd4f5 --- /dev/null +++ b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/Modules/module.modulemap.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6786f222fe61a484aa3e25961e3f8a7e +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/WechatOpenSDK b/Assets/Plugins/iOS/WechatOpenSDK-XCFramework-NoPay.xcframework/ios-arm64/WechatOpenSDK.framework/WechatOpenSDK new file mode 100644 index 0000000000000000000000000000000000000000..defd024f826b55058d380fb69017f4008a75b918 GIT binary patch literal 4211592 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