Unity3D是由Unity Technologies開發(fā)的一個讓玩家輕松創(chuàng)建諸如三維視頻游戲、建筑可視化、實時三維動畫等類型互動內(nèi)容的多平臺的綜合型游戲開發(fā)工具,是一個全面整合的專業(yè)游戲引擎;在游戲中使用分享功能能夠有效的幫助游戲運營推廣,通過分享回流來提高APP安裝量。ShareSDK的Unity3D插件可以幫助開發(fā)者快速實現(xiàn)分享與授權(quán)功能。
新建網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站開發(fā)等網(wǎng)站項目制作,到程序開發(fā),運營維護(hù)。創(chuàng)新互聯(lián)2013年開創(chuàng)至今到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
一、應(yīng)用注冊
獲取appkey,操作步驟可參考:《Mob開發(fā)者后臺使用指南》
二、快速集成
下載ShareSDK的Unity3D工具類,雙擊或?qū)隨hareSDK.unitypackage導(dǎo)入相關(guān)文件。 注意該操作可能會覆蓋您原來已經(jīng)存在的文件。
掛接ShareSDK腳本并配置平臺信息
選擇好需要掛接的GameObject(例如Main Camera),在右側(cè)欄中點擊Add Component,選擇Share SDK 進(jìn)行掛接。
cdn.xitu.io/2019/6/17/16b64a4fec59d22b?imageView2/0/w/1280/h/960/format/webp/ignore-error/1">
掛接后會發(fā)現(xiàn)提供了當(dāng)前支持的平臺和及其配置信息。可以直接在此處修改你所需要的平臺的配置信息。需要注意的是當(dāng)前的編譯環(huán)境是Android還是iOS,其字段名稱是不同的哦!
Android編譯配置
關(guān)鍵文件:mainTemplate.gradle和proguard-user.txt
Unity2017及以上版本,在Build Settings > Player Settings下面,有兩個開關(guān),新建項目的話打開這兩個開關(guān)就可以在Plugins>Android生成對應(yīng)的兩個文件;由于這兩個文件ShareSDK都有直接提供,只需導(dǎo)入.unitypackage就好,Unity檢測到已經(jīng)存在這兩個文件,自動會更新為勾選狀態(tài);
Build的時候有一個Build ? ? System選項,此選項默認(rèn)選擇的Internal,切記要改成選擇里面的gradle選項(重要)
圖中所示的mainTemplate.gradle文件,即為集成的核心文件,使用編輯器打開此文件,要點內(nèi)容如下:
此處為區(qū)分Unity5.6和Unity2017 gradle插件版本的地方,開發(fā)時用到哪個版本就使用哪個,若使用到其他Unity版本,請隨意選擇一個,然后build,編譯的時候會報錯的,Console控制臺信息報錯時會提示插件版本是多少,根據(jù)提示修改成需要的版本就好(只修改后面的數(shù)字,比如:2.3.0或者2.1.0)
buildscript{
repositories{
jcenter()
}
dependencies{
classpath'com.android.tools.build:gradle:2.3.0'//Unity2017
//classpath 'com.android.tools.build:gradle:2.1.0'//Unity5.6
// 注冊MobSDK
classpath'com.mob.sdk:MobSDK:+'
}
}
此處為配置簽名文件和簽名文件的別名和密碼(正式發(fā)布apk需要的簽名文件),可以寫絕對路徑,也可以寫相對路徑,相對路徑使用”..\”跳出一層目錄,跳出多層則連續(xù)拼接
signingConfigs{
release{
keyAlias 'demokey.keystore'
keyPassword '123456'
storeFile file('F:\\Unitydemo(CJY)\\MobPushForUnity\\Assets\\Plugins\\Android\\demokey.keystore')
storePassword '123456'
}
}
此處為混淆文件的配置,也就是MobPush提供的proguard-user.txt文件,此文件內(nèi)容不需要更改,按照提供的即可, 如自己代碼需要額外增加混淆邏輯,可自行增加混淆規(guī)則,如果是Unity2017以下版本,請把注釋的代碼調(diào)換一下即可; (minifyEnabled屬性為是否開啟代碼混淆:true為開啟混淆,false為關(guān)閉)
buildTypes {
release{
minifyEnabled true// 是否混淆
//shrinkResources false// 是否去除無效的資源文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-user.txt' //Unity2017及以上
//proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt' ?//Unity2017以下
signingConfig signingConfigs.release
}
debug{
minifyEnabled false
signingConfig signingConfigs.release
}
}
配置第三方key信息
ShareSDK提供了一個MobSDK.gradle文件,可以在里面直接將mob的key改成自己的,并且刪除不需要的平臺,或者修改成自己的第三方key的信息即可;
apply plugin: 'com.mob.sdk'
MobSDK{
appKey "moba6b6c6d6"
appSecret "b89d2427a3bc7ad1aea1e1e8c1d36bf3"
ShareSDK {
version "3.3.0"
//平臺配置信息
devInfo {
SinaWeibo {
id 1
sortId 1
appKey "568898243"
appSecret "38a4f8204cc784f81f9f0daaf31e02e3"
callbackUri "http://www.sharesdk.cn"
shareByAppClient true
enable true
}
Wechat{
id 4
sortId 4
appId "wx4868b35061f87885"
appSecret "64020361b8ec4c99936c0e3999a9f249"
userName "gh_afb25ac019c9"
path "pages/index/index.html?id=1"
withShareTicket true
miniprogramType 0
bypassApproval false
enable true
}
WechatMoments{
id 5
sortId 5
appId "wx4868b35061f87885"
appSecret "64020361b8ec4c99936c0e3999a9f249"
bypassApproval false
enable true
}
QQ{
id 7
sortId 7
appId "100371282"
appKey "aed9b0303e3ed1e27bae87c33761161d"
shareByAppClient true
bypassApproval false
enable true
}
Facebook{
id 8
sortId 8
appKey "1412473428822331"
appSecret "a42f4f3f867dc947b9ed6020c2e93558"
callbackUri "https://mob.com"
shareByAppClient true
enable true
}
}
}
}
iOS編譯配置
初始化與社交平臺信息配置
修改ShareSDKDevInfo.cs文件,配置所需的平臺信息
1.配置您自己的ShareSDK的AppKey (通過第一步獲?。?/p>
publicclassAppKey
{
//配置ShareSDK AppKey
publicstring appKey = "a5d9150e8348";
}
2.選擇所需要的平臺,不想要的可以直接注釋或刪掉
publicclassDevInfoSet
{
publicSinaWeiboDevInfo sinaweibo;
publicTencentWeiboDevInfo tencentweibo;
publicQQ qq;
publicQZone qzone;
}
3.配置對應(yīng)平臺的信息(建議直接修改字符串值即可)
publicclassSinaWeiboDevInfo: DevInfo
{
#if UNITY_ANDROID
publicconstinttype = (int) PlatformType.SinaWeibo;
publicstring SortId = "1";
publicstring AppKey = "568898243";
publicstring AppSecret = "38a4f8204cc784f81f9f0daaf31e02e3";
publicstring RedirectUrl = "http://www.sharesdk.cn";
publicstring ShareByAppClient = "false";
#elif UNITY_IPHONE
publicconstinttype = (int) PlatformType.SinaWeibo;
publicstring app_key = "568898243";
publicstring app_secret ="38a4f8204cc784f81f9f0daaf31e02e3";
publicstring redirect_uri = "http://www.sharesdk.cn";
publicstring auth_type = "both"; ? ? ? //can pass "both","sso",or "web"
#endif
}
三、接口調(diào)用
首先引入命名空間:
usingcn.sharesdk.unity3d;
privateShareSDK ssdk;
分享
1.定制分享信息
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");
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);
分享參數(shù)可參考:平臺參數(shù)說明文檔
2.設(shè)置分享回調(diào)
ssdk.shareHandler = ShareResultHandler;
//以下為回調(diào)的定義:
voidShareResultHandler(intreqID, ResponseState state, PlatformType type, Hashtable result)
{
if(state == ResponseState.Success)
{
print ("share result :");
print (MiniJSON.jsonEncode(result));
}
elseif(state == ResponseState.Fail)
{
print ("fail! throwable stack = " + result["stack"] + "; error msg = " + result["msg"]);
}
elseif(state == ResponseState.Cancel)
{
print ("cancel !");
}
}
3.進(jìn)行分享
//通過分享菜單分享
ssdk.ShowPlatformList (null, content, 100, 100);
//直接通過編輯界面分享
ssdk.ShowShareContentEditor (PlatformType.SinaWeibo, content);
//直接分享
ssdk.ShareContent (PlatformType.SinaWeibo, content);
授權(quán)(每次都會跳轉(zhuǎn)到第三方平臺進(jìn)行授權(quán))
設(shè)置授權(quán)回調(diào)
ssdk.authHandler = AuthResultHandler;
//以下為回調(diào)的定義:
voidAuthResultHandler(intreqID, ResponseState state, PlatformType type, Hashtable result)
{
if(state == ResponseState.Success)
{
print ("authorize success !");
}
elseif(state == ResponseState.Fail)
{
print ("fail! throwable stack = " + result["stack"] + "; error msg = " + result["msg"]);
}
elseif(state == ResponseState.Cancel)
{
print ("cancel !");
}
}
進(jìn)行授權(quán)
ssdk.Authorize(PlatformType.SinaWeibo);
獲取用戶信息 (只會在第一次跳轉(zhuǎn)到第三方平臺進(jìn)行授權(quán))
指定獲取用戶信息的回調(diào)
sdk.showUserHandler = GetUserInfoResultHandler;
//以下為回調(diào)的定義:
voidGetUserInfoResultHandler(intreqID, ResponseState state, PlatformType type, Hashtable result)
{
if(state == ResponseState.Success)
{
print ("get user info result :");
print (MiniJSON.jsonEncode(result));
}
elseif(state == ResponseState.Fail)
{
print ("fail! throwable stack = " + result["stack"] + "; error msg = " + result["msg"]);
}
elseif(state == ResponseState.Cancel)
{
print ("cancel !");
}
}
獲取用戶信息
ssdk.GetUserInfo(PlatformType.SinaWeibo);
至此,Unity3D插件部分的工作已經(jīng)完成。如在操作過程中遇到任何問題,歡迎聯(lián)系技術(shù)支持QQ 4006852216隨時與我們進(jìn)行討論哦~