Unity接入ShareSDK的操作詳解(Demo)

最近一星期在瞭解Android接入SDK的過程,之前用Android Studio生成一個簡單的jar來實現Unity和Android的相互操作,今天嘗試接了下ShareSDK的接入,比預想的容易很多,詳細記錄一下,也希望對大家有所幫助。

環境:

Unity2018.2.41

夜深模擬器

AndroidSDK 29

JDK

android-ndk-r13b

一 新建Unity項目

    新建項目,我把它命名爲ShareSDKTest,然後在MainCamera下新建Canvas,幾個Button,一個Text,如下圖結構:

場景中看起來長這樣,

對了,設置一下Canvas->Scale Factor 值爲2,Button座標y軸相隔-50,場景隨便弄,能看到就行

點擊菜單File>Build Settings 切換到Android平臺,修改build system爲Internal(默認是gradle,但是用gradle工具打包時,會報一個錯,修改成internal就可以正常打包,原因未細究)接着修改PlayerSettings,修改這幾個地方,如下所示

package name這個名字很重要,很多地方都要修改保持一致(後面會說改哪裏),這個是app在程序裏面的名字,product name是安裝後icon顯示給用戶看的名字

Unity初步弄完,弄下一步

二 ShareSDK獲得App賬號

    打開ShareSDK的官網 http://www.mob.com/developer/register?tag=1,正常的操作進行註冊,登陸,然後申請開發者資質,大概1個小時審覈通過,通過後點擊右上角“產品中心”,點擊立即進入,如下圖

    然後創建一個應用,名字的話建議和前面Unity的名字一樣,叫做“ShareSDKTest”,創建後就可以獲得這個應用在ShareSDK的appkey和appsecret

保存這兩個值,隨便放在一個txt文本里,方便待會copy

三 下載,放置ShareSDK

    打開這個網址:https://github.com/MobClub/New-Unity-For-ShareSDK,clone下載下來,然後解壓,裏面有個叫ShareSDK.unitypackage的包,回到unity,點擊 Assets=>inprot package 導入這個包。(當然,在git的下載頁下有官方的說明,建議先看一遍)點擊Main Camera,添加Share SDK作爲它的Component,這樣ShareSDK就放進Unity裏了

四 修改ShareSDK的配置

   ShareSDK導入後需要修改很多地方,注意不要漏了

(1)點擊MainCamera,找到ShareSDK腳本組件,填入前面在ShareSDK官網獲得的AppKey和AppSecret

(2)點擊ShareSDK.cs,啓動Visual Studio,修改ShareSDK腳本的AppKey和AppSecret

(3)打開AndroidManifest.xml,修改AppKey和AppSecret

(4)打開AndroidManifest.xml,修改包名

(5)打開AndroidManifest.xml,修改版本,因爲我的Android Studio的安裝了這兩個版本,所以就改成16 和 29

(6)打開AndroidManifest.xml,修改Activity的name,就是在.wxapi.WXEntryActivity等3個activity加上package的前綴"com.sdk.sharesdktest"

五 獲得我們app的jar包

    官方說:微信規定WXEntryActivity.java類的位置必須放到 “項目包包名.wxapi” 路徑下,需要生成新的jar包,這個可以自己生成,不過我還不太熟悉Android Studio,就找官方客服幫忙了,官方q羣:4006852216,跟客服說幫忙生成一個新的DemoCallback.jar,然後報上packamge的名字(比如 com.sdk.sharesdktest),等幾分鐘就可以收到新的jar,把收到的jar放到Unity項目 Assets=>Plugins=>Android=>libs下

六 編寫C#腳本,實現對ShareSDK的調用

    這裏我寫了一個腳本SDKManager來調用接口,腳本掛載在Main Camera上,把前面創建的 button 和 text 拖拽到腳本組件上面,代碼如下:

using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using cn.sharesdk.unity3d;

public class SDKManager : MonoBehaviour {

    public Button smsBtn;
    public Button weChatBtn;
    public Button emailBtn;
    public Button smsContentBtn;
    public Text infoText;
    private ShareSDK ssdk;
    ShareContent content;

    void Start() {
        Init();
        InitBtns();
    }
    
    //獲得ShareSDK對象,並且註冊分享後的回調
    void Init()
    {
        ssdk = GameObject.Find("Main Camera").GetComponent<ShareSDK>();
        ssdk.shareHandler = ShareResultHandler;
    }

    //初始化按鈕的點擊事件
    void InitBtns()
    {
        smsBtn.onClick.AddListener(OnClickTestMsgBtn);
        weChatBtn.onClick.AddListener(OnClickWeChatBtn);
        emailBtn.onClick.AddListener(OnClickEmailBtn);
        smsContentBtn.onClick.AddListener(OnClickShowContentBtn);
    }

    //輸出信息到text,這樣才知道發生了什麼
    void PrintInfo(string info)
    {
        infoText.text = info;
    }

    //測試短信
    void OnClickTestMsgBtn()
    {
        PrintInfo("OnClickTestMsgBtn");
        ssdk.ShowPlatformList(new PlatformType[] { PlatformType.SMS }, GetShareInfo(" SMS "), 100, 100);
    }

    //測試微信
    void OnClickWeChatBtn()
    {
        PrintInfo("OnClickWeChatBtn");
        ssdk.ShowPlatformList(new PlatformType[] { PlatformType.WeChat }, GetShareInfo("we chat"), 100, 100);
    }

    //測試郵件按鈕
    void OnClickEmailBtn()
    {
        PrintInfo("OnClickEmailBtn");
        ssdk.ShowPlatformList(new PlatformType[] { PlatformType.Mail }, GetShareInfo("mail"), 100, 100);
    }

    //測試直接打開
    void OnClickShowContentBtn()
    {
        PrintInfo("OnClickShowContentBtn");
        ssdk.ShareContent(PlatformType.SMS, GetShareInfo("SMS"));
    }

    //獲得分享的內容結構
    ShareContent GetShareInfo(string platformType)
    {
        ShareContent content = new ShareContent();
        content.SetText("this is a test string.");
        content.SetImageUrl("https://f1.webshare.mob.com/code/demo/img/1.jpg");
        content.SetTitle("test title:" + platformType);
        content.SetTitleUrl("http://www.mob.com");
        content.SetSite("Mob-ShareSDK");
        content.SetSiteUrl("http://www.mob.com");
        content.SetUrl("http://www.mob.com");
        content.SetComment("test description");
        content.SetMusicUrl("http://mp3.mwap8.com/destdir/Music/2009/20090601/ZuiXuanMinZuFeng20090601119.mp3");
        content.SetShareType(ContentType.Webpage);
        return content;
    }


    //分享後的回調
    void ShareResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable result)
    {
        if (state == ResponseState.Success)
        {
            PrintInfo("Success" + MiniJSON.jsonEncode(result));
            print("share result :");
            print(MiniJSON.jsonEncode(result));
        }
        else if (state == ResponseState.Fail)
        {
            PrintInfo("Fail" + MiniJSON.jsonEncode(result));
            PrintInfo(MiniJSON.jsonEncode(result));
            print("fail! throwable stack = " + result["stack"] + "; error msg = " + result["msg"]);
        }
        else if (state == ResponseState.Cancel)
        {
            PrintInfo("cancel !");
            print("cancel !");
        }
    }
}

七 打包,檢查功能

好了,工作準備完了,執行unity的build打包,把打出來的包拖入夜深模擬器,也可以傳到自己的手機上安裝,最終效果是這樣的

一開始界面

點擊smsButton後

點擊smsContenButton後

回調結果

希望有所幫助,that‘s it !

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章