1. 程式人生 > >unity3d利用sharesdk分享內容至微信、新浪微博、qq空間等國內主流社交平臺(ios篇)

unity3d利用sharesdk分享內容至微信、新浪微博、qq空間等國內主流社交平臺(ios篇)

大家在玩遊戲時,通常都會看到分享的功能,最常見的是分享到微信朋友圈、qq空間或者新浪微博,產品經理通常稱這個功能模組為社會化。那這個功能在unity3d製作的遊戲中怎麼做到的呢?以前的老做法是按照對應的ios、安卓平臺、在微信or新浪微博上下載對應的sdk、按照其說明文件逐一接入,費時費力,而且多數都不支援u3d,需要自己寫介面,令廣大程式苦不堪言。如果能擁有一個整合化的,並且支援u3d分享的sdk,僅需讓我們接入一次,而不必多次重複操作,那定是一件愉快的事。ShareSDK——目前,我使用過的這款整合型社會化元件還不錯,關鍵是免費。下面就其具體使用方式簡單做下介紹。考慮不周之處還望指正。不再閒話,進入正題。

這裡我們先以unity3d分享到ios微信、微博、qq空間為例:

1、首先到其官網下載unity3d對應的sdk,下載地址:http://sharesdk.mob.com/Download,下載完畢解壓,匯入unity工程中,根據需要匯入對應的平臺,全部匯入也無妨,這裡選擇匯入ios:




2、匯入到專案中後,會在Assets資料夾下多出以下檔案(如果你之前已經存在某些同名資料夾,會做合併處理)。將裡面的ShareSDk指令碼掛載到主攝像機上。


當然這裡也可以不必非得掛在攝像機上。例如我們的遊戲就掛在全域性存在的Main物件上。如果掛在非MainCamera物件上,記得修改ShareSDK.cs中物件名稱:


以上u3d的sdk匯入工作完畢。接下來開始在u3d內編碼呼叫函式:

3、新建指令碼,簡單寫幾個button測試。或者使用Demo中給定的Demo.cs類檔案,這個指令碼也要掛在攝像機上。demo執行可看到以下效果。


當然也可以不必新建指令碼,只需在合適位置呼叫分享的程式碼即可,下面4、就其程式碼向大家提醒幾點需要注意的地方。

首先start函式中呼叫以下兩個方法,第一個為回撥物件,就是你掛指令碼的物件名稱,預設為:MainCamera,第二個是開啟專屬你的應用名稱,這個appkey需要在sharesdk官網上註冊。


appkey註冊地址:http://dashboard.mob.com/#/,拿到appkey,補充一下,如果這裡不修改,預設使用api20,就會出現分享完畢後,內容下面顯示”來自sharesdk“的字尾。如果修改為自己的appkey,那就會顯示來自你在該網站上註冊的應用名字。


5、註冊各種appkey等值。我們要分享到哪個社交平臺,還需要在對應的平臺上註冊app_key、app_secret、以及回撥地址redirect_uri,這些平臺註冊方式基本類似,大同小異。例如我們這裡分享到微信、新浪微博,就需分別拿到對應平臺的app_key、app_secret、redirect_uri。


微信,需要到微信開放平臺,地址:https://open.weixin.qq.com/(注意不是騰訊開放平臺、qq空間需要到騰訊開放平臺)先註冊成為開發者、再接著建立應用,填寫基本應用資訊,等待稽核,最長7天,一般1個工作日。裡面有需要填寫appstore下載地址,如果應用沒有上線,這裡可以填寫預判的appstore地址(預判地址在appstore後臺——“更多”——“在Appstore中檢視”  mac上itunes裡面檢視)。最終得到以下資訊即可:


新浪微博同理,地址:https://open.weixin.qq.com/。需要到新浪開放平臺註冊、申請成為開發者、建立應用、填寫應用詳情、初步稽核(稽核中有張截圖必須含有新浪分享標誌,否則不通過)、下載地址填寫上面的預判地址。註冊得到appkey等,如果你的應用還沒有上線,那就意味著下載地址是不可用的。你申請的appkey可以暫用,分享時會出現介面,但是分享不成功,報錯大約就是沒有稽核成功云云。這個不用擔心,等到真正應用上架,就可以正常分享。就是說,程式碼事先可以寫好,只要ios稽核過了,並且釋出。我們就能馬上在新浪進行二次稽核,上架廣場。分享也隨之正常,不再報錯。


QQ空間類似,地址:http://open.qq.com/apps/dev。同樣需要註冊開發者、建立應用、填寫應用資料、最終得到appkey等資訊。

6、以上是分享對應平臺所必備的值,申請完畢後,寫入程式碼內。每個平臺需要的值不完全相同,夠用就好。下圖中從上至下,依次新浪、qq空間、微信。如果需要新增其他分享、例如海外的facebook、twitter等等,按照它demo裡面程式碼即可。


7、下面是分享內容的設定。分享內容在這裡設定,包括文字、圖片、連結。其中圖片可以是網路圖片,但還需要稽核過才能實際展示出來。也可以是本地圖片,ios圖片放在 StreamingAssets只讀資料夾下面,寫入下面的程式碼。content["image"] = Application.streamingAssetsPath+”/pic.png”;

安卓得放在sdcard中才可以,需要在分享前把u3d裡的圖片拷貝到sdcard卡里面,這也是我看有其他前輩這麼摸索出來的。在Resources資料夾下放一個圖片,記住一定要PNG,在U3D裡面把圖片的格式修改成RGBA

//讀、寫的路徑        

string imagePath = Application.persistentDataPath + "/pic.png";

//如果檔案不存在,把它拷貝進去。

if(!System.IO.File.Exists(imagePath))

{

       Texture2D o =  Resources.Load("pic ") as Texture2D;

       System.IO.File.WriteAllBytes(imagePath, o.EncodeToPNG());

}

這樣在分享圖片的時候

//image的路徑就可以直接寫了。             

string imagePath = Application.persistentDataPath + "/ pic.png";

if(System.IO.File.Exists(imagePath))

{

       content["image"] = imagePath;

}

如果你想分享的是一張截圖圖片,路徑這樣來寫

Application.CaptureScreenshot("screen.png");

content["image"] =     Application.persistentDataPath + "/screen.png";


8、如果遇到微信分享因為許可權失敗,看是否你有寫了這些,請刪除這裡,可能是因為要獲得朋友圈資訊許可權不足,導致分享失敗。


9、至此,我們完成了在unity當中的工作。接下來,我們要釋出到安卓或者ios平臺,還需要繼續進行下面的工作。

10、分享到ios平臺:———————————————————————


在上方選中你要分享的平臺,其餘勾掉,下面選擇適合自己的分享彈窗的ui

11、下載完畢需要在mac上解壓,解壓出的檔案待用,接下來的工作將在mac中xcode中進行。

12、如果你在windows上,你需要u3d匯出ios工程,拷貝至mac上,利用xcode開啟工程。

 

13、xcode開啟匯出的u3d工程,將剛才解壓的名為sharesdk的資料夾直接拖到開啟的工程下,注意勾選copy,如圖:

 

14、匯入完畢之後,可以在左側看到其目錄結構,如果想刪除可去原始檔夾下刪除即可。

 

15、新增依賴項,可能你有做了其他接入,有些依賴項會發生重複,去掉重複,僅需一個即可。

 

16、微信分享還需要進一步配置,開啟unityappcontroller.mm檔案。加入標頭檔案sharesdk/sharesdk.h,講以下程式碼替換至截圖位置。

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL*)url

{

    return [ShareSDKhandleOpenURL:url wxDelegate:nil];

}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)urlsourceApplication:(NSString *)sourceApplication annotation:(id)annotation

{

    return [ShareSDKhandleOpenURL:url sourceApplication:sourceApplication annotation:annotationwxDelegate:nil];

}替換以下程式碼。否則無法彈出分享介面。


17、微信分享還需要在info處,新增url。分別填寫程式包名、在微信平臺申請的appkey。如圖:


18、在ShareSDKUnity3DBridge檔案中,找到要分享的對應平臺註釋掉不需要的預編譯檔案。注意如果分享qq空間需要取消qq註釋。其他用哪個放開即可

19、完全配置好後,編譯執行。點選微博分享,會彈出分享內容,如果從未授權登陸,當點擊發表會出現授權登陸介面。登陸一次後會記錄登入狀態。

微信分享,必須需要裝置安裝微信才能分享。安裝微信後會跳轉授權登陸介面。

如果有異常,注意檢視xcode裡面報出的log。

微信如果出現不彈窗,請注意是否url配對、程式碼是否替換、微信是否安裝。

微信分享遇到許可權問題,注意刪掉前文說的幾句程式碼。

彈窗異常,注意選擇對應ui下載。

新浪必須等ios應用上線才能分享成功,否則登入進入大約顯示未稽核廣場云云。

至此,unity3d分享ios微信、新浪微博、qq空間就此結束。如有問題,敬請指正。

微信分享效果:


新浪微博效果:


另外有分享的安卓篇。以及Facebook、twitter等我將在後續有時間補上。