天天看點

如何使用友盟 Cocos2d-x 分享元件實作 Android/iOS 分享功能

Cocos2d-x作為一款優秀的跨平台遊戲引擎,已經被越來越多的開發者使用,而在遊戲中使用分享元件能夠有效的提供使用者粘性,通過分享回流來提高APP安裝量,但是目前市面上能夠在Cocos2d-x環境下使用的分享插件并不多,開發者們隻能自己對原生分享SDK進行封裝來實作,前一段時間友盟推出Cocos2d-x分享元件,我測試了一下,感覺還是比較友善的。

內建準備:

首先我簡單介紹一下元件壓縮包的組成

Cocos2dx

實作Cocos2d-x中跨平台分享功能,需拷貝到您項目的Classes檔案夾中;

Platforms

原生的Android和iOS社會化元件SDK,需要您将庫和資源拷貝到對應平台的項目中;

doc

元件的內建文檔;

Umeng_Cocos2dx_Demo_V1.0

Android部分的demo檔案,可以安裝在手機上看一下簡單的分享效果和樣式

Cocos2d-x雖然是一個跨平台的引擎,但是對于Android和IOS平台來說,具體的內建方式還是有一定的差別,這裡分别介紹Android和IOS平台內建中不同的地方,然後再集中介紹跨平台通用的部分。

Android平台內建步驟:

步驟一:

下載下傳Cocos2d-x元件(下載下傳位址) 并且将jar包添加到build path 路徑下,将res資源檔案夾加入到你工程對應資源檔案下。将Platforms/Android/controller目錄下的com檔案夾拷貝到您的Cocos2d-x項目Android平台的src目錄下,并且在jni/Android.mk中的LOCAL_SRC_FILES下添加如下配置 (注意格式,否則會編譯出錯) :

../../Classes/Cocos2dx/Android/CCUMSocialController.cpp  \
../../Classes/Cocos2dx/ShareButton/UMShareButton.cpp \
../../Classes/Cocos2dx/Common/CCUMSocialSDK.cpp
      

步驟二:

在Cocos2dxActivity子類的onCreate方法下添加如下代碼,用來完成初始化步驟

// this為Cocos2dxActivity類型, 參數2為描述符,可随意修改.
CCUMSocialController.initSocialSDK(this, "com.umeng.social.share");
      

步驟三:

在代碼中覆寫Cocos2dxActivity子類的onActivityResult方法,用來實作回調方法。在onActivityResult添加如下代碼 :

// 授權回調
CCUMSocialController.onActivityResult(requestCode, resultCode, data);
super.onActivityResult(requestCode, resultCode, data);
           

iOS平台內建步驟:

步驟一:

解壓SDK壓縮包,将Platforms/iOS檔案夾和Cocos2dx檔案夾拖入工程目錄,并删除Cocos2dx/Android檔案夾,添加後應該是這個效果:

如何使用友盟 Cocos2d-x 分享元件實作 Android/iOS 分享功能

步驟二:

添加系統需要的framework

Security.framework               //用于系統加密處理
libiconv.dylib                   //QQ互聯的庫檔案
SystemConfiguration.framework    //QQ互聯需要的framework
CoreGraphics.framework           //QQ互聯需要的framework
Social.framework                 //分享元件需要的framework,如果不使用twitter則不需要
libsqlite3.dylib                 //QQ互聯需要的framework
libstdc++.dylib                  //C++的庫檔案
CoreTelephony.framework          //QQ互聯需要的framework
libz.dylib                       //QQ互聯需要的framework
Accounts.framework               //系統需要的framework,如果不使用twitter則不需要
      

步驟三:

實作系統的回調方法,在Xcode工程中的ios檔案夾下的AppController.mm檔案中加入下面的代碼:

#import "UMSocial.h"
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
  return [UMSocialSnsService handleOpenURL:url];
}
      

完成了上述準備工作之後,就可以開始正式的分享步驟了,友盟提供了多種分享樣式,有精力的開發者可以使用底層接口,可以完全自由定制分享界面和樣式,不過相信大部分開發者們使用第三方插件的初衷都是為了節省精力,是以這裡就隻介紹使用預設分享界面的方法,有更多需求的開發者們可以自己探索自定義界面接口部分。

步驟一:加入系統需要的頭檔案

// 授權回調
#include "Cocos2dx/Common/CCUMSocialSDK.h"
#include "Cocos2dx/ShareButton/UMShareButton.h"
// 使用友盟指令空間
USING_NS_UM_SOCIAL;
// ...... 代碼省略
// HelloWorld為cocos2d::CCLayer的子類
bool HelloWorld::init()
{
   //
   // 1. super init first
   if ( !CCLayer::init() )
   {
       return false;
   }
}
           

步驟二:分享按鈕的建立

// 建立分享按鈕, 參數1為按鈕正常情況下的圖檔, 參數2為按鈕選中時的圖檔,參數3為友盟appkey, 參數4為分享回調
   UMShareButton *shareButton = UMShareButton::create("shareNormal.png","shareSelected.png", "你的友盟appkey", share_selector(shareCallback)) ;
           

步驟三:設定分享平台及内容

// 顯示在友盟分享面闆上的平台
vector* platforms = new vector();
platforms->push_back(SINA);
platforms->push_back(RENREN) ;
platforms->push_back(DOUBAN) ;
platforms->push_back(QZONE) ;
platforms->push_back(QQ) ;

// 設定友盟分享面闆上顯示的平台
shareButton->setPlatforms(platforms);
// 設定文本分享内容
shareButton->setShareContent("umeng social Cocos2d-x sdk.") ;
// 設定要分享的圖檔, 圖檔支援本地圖檔和url圖檔, 但是url圖檔必須以http://或者https://開頭
shareButton->setShareImage("/sdcard/header.jpeg") ;
// 設定按鈕的位置
shareButton->setPosition(ccp(, ));

// 然後開發者需要将該按鈕添加到遊戲場景中
CCMenu* pMenu = CCMenu::create(shareButton, NULL);
pMenu->setPosition(CCPointZero);
this->addChild(pMenu, );

// ********************** 設定平台資訊 ***************************
// CCUMSocialSDK *sdk = shareButton->getSocialSDK();
// sdk->setQQAppIdAndAppKey("設定QQ的app id", "appkey");
// sdk->setWeiXinAppId("設定微信和朋友圈的app id");
// sdk->setYiXinAppKey("設定易信和易信朋友圈的app id");
// sdk->setLaiwangAppInfo("設定來往和來往動态的app id",
//                  "設定來往和來往動态的app key", "我的應用名");
// sdk->setFacebookAppId("你的facebook appid");
// 設定使用者點選一條圖文分享時使用者跳轉到的目标頁面, 一般為app首頁或者下載下傳頁面
// sdk->setTargetUrl("http://www.umeng.com/social");
// 打開或者關閉log
// sdk->setLogEnable(true) ;
// **********************   END ***************************
           

內建到這一步就完成了,如果沒有異常,應該會出現下面的界面,這說明你已經成功實作了內建工作。

如何使用友盟 Cocos2d-x 分享元件實作 Android/iOS 分享功能

元件下載下傳傳送門:http://dev.umeng.com/social/cocos2d-x/sdk-download

GitHub傳送門:http://github.com/umeng/umeng-social-for-cocos2d-x

轉自:http://segmentfault.com/blog/umeng/1190000000583889