untiy接入微信SDK实现iOS分享
untiy接入微信SDK實現iOS分享功能
說明:
使用平臺:mac電腦
Unity處理
2.下載微信的開發工具包sdk導入untiy的 Assest/Plugins/iOS/WechatSDK 目錄下
3.在Assest/Plugins/iOS下新建.h文件 CustomAppController.mm,為了Xcode打包的時候用自己定義的AppController,微信官方也說過要重寫一些方法
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;@end5.在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", "");}} } @end7.看到上面的回調會調用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'end2.繼續在根目錄控制臺輸入:pod install,等待完成安裝微信的WechatOpenSDK
3.打開.xcworkspace工程,在info里輸入微信的3個白名單,info的改變代碼:
重啟項目后就可以在info看到這個key
4.Xcode打包ios的簽名證書啥的看其他博客,這里跳過。
5.開始打包,我打包中遇到了這些問題:
解決:這里只需要在Xcode中將BitCode改為No
還有這個錯,是缺少WebKit
解決:添加webkit
最后打包測試
video
點擊按鈕跳轉到微信分享,由于App還在審核中,我隨便加的Appid和Universal Links,所以有這個錯,不過我們已經可以調用打開微信進行分享了,應用審核完就填入正確的Appid和Universal Links,就不會有這個窗口了!
總結
以上是生活随笔為你收集整理的untiy接入微信SDK实现iOS分享的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS下torque集群配置(一)
- 下一篇: syslog-ng 和syslog-ng