1、什么是分享?
發朋友圈,扣扣空間,轉載文章,轉發鏈接給扣扣好友,微信好友,這就是分享!
2、分享方式:
1、跳轉APP,例如我們在一些應用上通過分享至朋友圈或者分享至微博等。
2、二維碼掃描分享,二維碼中帶有分享的信息。
但是怎么在Unity中進行分享呢?
3、分享平臺
說到分享其實無外乎微信,微博,QQ平臺。
但是實際上有很多平臺,只不過我們訪問不到而已,如果要做國際化分享,那么就必須導入相應的SDK
4、常見的分享平臺
1、友盟分享 點擊進入官網
這個下載比較坑
官方的集成文檔沒什么難度,主要在于對Unity的熟悉程度,還有就是打包后,調用各平臺的設置比較麻煩
2、Share分享點擊進入官網
這邊點擊相應的平臺下載后,會直接打開相應的GitHub網址
下載后,打開Unity導入進來。包里面總共兩個腳本,一張圖片
按照GITHub進行相關的開發就可以。
如何使用:將項目中Unity3dDemo/Assets/Plugins目錄拷貝到我們項目的Assets目錄,或者導入sharesdk-unity3d-plugin.unitypackage
1.給Camera掛載ShareSDK腳本.這個腳本是用來配置分享的平臺信息
2.默認分享平臺比較多,如果只想支持部分平臺的分享, 只需要去修改 ShareSDKDevInfo 腳本中 DevInfoSet 類. 注釋掉不需要的分享的平臺即可
3.接下來實現自定義界面來分享功能
這是系統的小案例,我們只需要將分享平臺進行對應的添加。至于里面的App_Id是什么?這個實在騰訊微信平臺注冊的id號。這里可以去微信開發者平臺根據相關流程獲取。
那么我們如何進行自定義分享呢?
public class ShareSDKTest : MonoBehaviour {
private ShareSDK shareSDK;
public Text messageText;
void Start () {
shareSDK = GetComponent <ShareSDK> ();
// //分享回調事件 綁定
shareSDK.shareHandler += ShareResultHandle;
}
// 點jiWechat進行分享
public void wechatOnClickToShare()
{
ShareContent content = new ShareContent ();
content.SetText ("雷潮開始發功了");
content.SetTitle ("你懂的");
// 分享網址
content.SetUrl ("http://www.lxweimin.com/u/74372cf48f59");
//出分享菜單選列表
shareSDK.ShowPlatformList (null, content, 100, 100);
// 指定分享平臺
shareSDK.ShowShareContentEditor (PlatformType.WeChat, content);
}
//分享結果回調
void ShareResultHandle (int reqID, ResponseState state,PlatformType type,Hashtable data)
{
if (state == ResponseState.Success) {
messageText.text = MiniJSON.jsonEncode (data);
} else if (state == ResponseState.Fail) {
print ("fail! throwable stack = " +
data ["stack"] + "; error msg = "
+ data ["msg"]);
} else if (state == ResponseState.Cancel) {
messageText.text = "Cancel !~!~~~~~~";
}
}
}
另一個扣扣分享也是一樣的寫法,唯獨在上面分享平臺選擇修改一下
// 指定分享平臺
shareSDK.ShowShareContentEditor (PlatformType.QQ, content);
這里要注意,按鈕事件需要注冊綁定。別到時候傻逼。。。
打印結果:
第三方登陸:
經常會遇到這種界面:
這種如何制作?
private ShareSDK shareSDK;
public Text messageText;
void Start () {
shareSDK = GetComponent <ShareSDK> ();
//授權回調事件
shareSDK.authHandler += AuthResultHandle;
//用戶信息事件
shareSDK.showUserHandler += GetUserInfoResoultHandle;
}
// 注意:一般在開發過程中,會判斷用戶手機有沒有裝相關的快速登陸的軟件,例如沒有裝QQ那么就不顯示QQ快捷登陸
// QQ登陸
public void loginQQClick()
{
// 選擇何種方式登陸
shareSDK.Authorize (PlatformType.QQ);
}
// 微信登陸
public void loginWechatClick()
{
shareSDK.Authorize (PlatformType.WeChat);
}
// 登陸狀態句柄
void AuthResultHandle (int reqID, ResponseState state,PlatformType type,Hashtable data)
{
if (state == ResponseState.Success) {
messageText.text = "授權登錄成功";
//授權成功的話, 獲取用戶的資料
shareSDK.GetUserInfo (type);
} else if (state == ResponseState.Fail) {
print ("fail! throwable stack = " +
data ["stack"] + "; error msg = "
+ data ["msg"]);
} else if (state == ResponseState.Cancel) {
messageText.text = "Cancel !~!~~~~~~";
}
}
// 獲取返回信息
void GetUserInfoResoultHandle(int requisetID,ResponseState state,PlatformType type,Hashtable data)
{
if (state == ResponseState.Success) {
//利用PlatformType來判斷不同的平臺獲取用戶信息的回調
//將返回數據編碼成Json格式的數據, 進行json解析展示到界面即可
switch (type) {
case PlatformType.QQ:
messageText.text = MiniJSON.jsonEncode (data);
break;
}
} else if (state == ResponseState.Fail) {
print ("fail! throwable stack = " +
data ["stack"] + "; error msg = "
+ data ["msg"]);
} else if (state == ResponseState.Cancel) {
messageText.text = "Cancel !~!~~~~~~";
}
}
3、二維碼分享
其實二維碼分享主要是將網頁嵌入,通過掃描工具進行相關的分享。這個適合將游戲過程或者結果進行分享,同時夾帶我們的廣告,類似綁定宣傳。
Unity進行二維碼生成