日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

untiy接入微信SDK实现iOS分享

發布時間:2024/1/1 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 untiy接入微信SDK实现iOS分享 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

untiy接入微信SDK實現iOS分享功能

說明:
使用平臺:mac電腦

Unity處理

  • 進入微信開發者官網申請應用
  • 2.下載微信的開發工具包sdk導入untiy的 Assest/Plugins/iOS/WechatSDK 目錄下

    3.在Assest/Plugins/iOS下新建.h文件 CustomAppController.mm,為了Xcode打包的時候用自己定義的AppController,微信官方也說過要重寫一些方法

    // CustomAppController.mm #import "WXApiManager.h"#import "UnityAppController.h" @interface CustomAppController : UnityAppController @endIMPL_APP_CONTROLLER_SUBCLASS (CustomAppController)@implementation CustomAppController- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {[super application:application didFinishLaunchingWithOptions:launchOptions];// TODOreturn YES; }- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]]; }- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]]; }- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler {return [WXApi handleOpenUniversalLink:userActivity delegate:[WXApiManager sharedManager]]; }@end

    4.在Assest/Plugins/iOS下新建WeChatUnity文件夾,處理unity和微信sdk的通信,并在此文件夾下新建.h文件:WXApiManager.h

    // WXApiManager.h#import <Foundation/Foundation.h> #import "WXApi.h"@interface WXApiManager : UIResponder<UIApplicationDelegate, WXApiDelegate>+ (instancetype)sharedManager;@end

    5.在Assest/Plugins/iOS/WeChatUnity下新建WeChatUnity.mm文件,負責微信sdk的初始化和分享功能的封裝

    // WeChatUnity.mm#import <Foundation/Foundation.h> #import "WXApiManager.h"#define UNITY_CS_API extern "C"static NSString *mWXAppid = nil;// 將c字符串const char* 轉為 oc字符串NSString static inline NSString * str_c2ns(const char*s) {if (s)return [NSString stringWithUTF8String: s];elsereturn [NSString stringWithUTF8String: ""]; }// 初始化 UNITY_CS_API void UnityWeChatInit(const char* appId, const char* universalLink) {mWXAppid = str_c2ns(appId);[WXApi registerApp:mWXAppid universalLink:str_c2ns(universalLink)]; }// 封裝分享接口UNITY_CS_API void UnityWeChatLogin(const char* state) {NSLog(@"UnityWeChatLogin");// 此時會拉起微信,授權后會回調WXApiManager的onResp方法SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];req.bText = YES;req.text = @"分享的內容";req.scene = WXSceneSession;[WXApi sendReq:req completion:^(BOOL success){NSLog(@"微信分享:%@", success ? @"成功" : @"失敗");}]; }

    6.注冊回調,在Assest/Plugins/iOS/WeChatUnity下新建WXApiManager.mm,編寫分享的回調

    #import "WXApiManager.h"@implementation WXApiManager// 單例 +(instancetype)sharedManager {static dispatch_once_t onceToken;static WXApiManager *instance;dispatch_once(&onceToken, ^{instance = [[WXApiManager alloc] init];});return instance; }- (void)onReq:(BaseReq *)req {// TODO 微信回調,從微信端主動發送過來的請求 }// WXApiManager.mm- (void)onResp:(BaseResp *)resp {if ([resp isKindOfClass:[SendMessageToWXReq class]]) {NSLog(@"微信授權回調");if (resp.errCode == 0) {UnitySendMessage("SDKCallBack", "WeChatLoginCallback", "234");//象征性傳一個234}else{// 失敗,回調給UnityUnitySendMessage("SDKCallBack", "WeChatLoginCallback", "");}} } @end

    7.看到上面的回調會調用unity方法了吧,我們需要建一個SDKCallBack類,里面寫個WeChatLoginCallback方法。

    // SDKCallBack.csusing UnityEngine;public class SDKCallBack : MonoBehaviour {/// <summary>/// 分享回調/// </summary>/// <param name="callBackInfo"></param>public void WechatLoginCallback(string callBackInfo){if (string.IsNullOrEmpty(callBackInfo)){// TODO 分享失敗,請重試Debug.LogWarning("分享失敗");}else{Debug.LogWarning("分享成功");}} }

    8.建立c#腳本WechatSDK.cs進行sdk的初始化,方法是UnityWeChatLogin代表分享意思

    // WeChatSDK.csusing System.Runtime.InteropServices; using UnityEngine;public class WeChatSDK {public static void Init(){ #if UNITY_IOSUnityWeChatInit(@"你的AppId", "你的Universal Links"); #elif UNITY_ANDROID// TODO Android的調用 #endif}#if UNITY_IOS[DllImport("__Internal")]static extern void UnityWeChatInit(string appId, string universalLink); #endif// 登錄public static void Login(){ #if UNITY_IOS// "app_wechat"為傳給分享的數據UnityWeChatLogin("app_wechat"); #elif UNITY_ANDROID// TODO Android的調用 #endif}#if UNITY_IOS[DllImport("__Internal")]static extern void UnityWeChatLogin(string state); #endif}

    9.untiy這邊的處理就完了,建一個Test腳本做sdk的初始化,UI按鈕點擊調用分享的功能吧

    using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Test : MonoBehaviour {public Button loginBtn;// Start is called before the first frame updatevoid Start(){WeChatSDK.Init();//初始化微信SDKloginBtn.onClick.AddListener(()=> {Debug.Log("開始分享");WeChatSDK.Login(); });} }

    10.最后打包Xcode項目

    Xcode處理

    通過 CocoaPods 集成微信sdk

    1.Xcode項目的根目錄打開控制臺,輸入命令:touch podfile,會看到這個名字的文件,打開它并編寫

    # Uncomment the next line to define a global platform for your projectplatform :ios, '11.0'target 'Unity-iPhone' do//'引號內為你的Xcode項目名字,我的默認叫Unity-iPhone'# Uncomment the next line if you're using Swift or would like to use dynamic frameworks# use_frameworks!# Pods for 項目文件名,目前為止最新的已經到1.8.4pod 'WechatOpenSDK'end

    2.繼續在根目錄控制臺輸入:pod install,等待完成安裝微信的WechatOpenSDK
    3.打開.xcworkspace工程,在info里輸入微信的3個白名單,info的改變代碼:

    <key>LSApplicationQueriesSchemes</key><array><!-- 微信 URL Scheme 白名單--><string>weixinULAPI</string><string>weixin</string><string>weixinURLParamsAPI</string> </array>

    重啟項目后就可以在info看到這個key
    4.Xcode打包ios的簽名證書啥的看其他博客,這里跳過。
    5.開始打包,我打包中遇到了這些問題:

    解決:這里只需要在Xcode中將BitCode改為No
    還有這個錯,是缺少WebKit
    解決:添加webkit
    最后打包測試

    video

    點擊按鈕跳轉到微信分享,由于App還在審核中,我隨便加的Appid和Universal Links,所以有這個錯,不過我們已經可以調用打開微信進行分享了,應用審核完就填入正確的Appid和Universal Links,就不會有這個窗口了!

    總結

    以上是生活随笔為你收集整理的untiy接入微信SDK实现iOS分享的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。