Android Cocos 2 d-xゲーム統合友盟社会化コンポーネント共有機能


Cocos 2 d-xの概要
Cocos 2 d-xはマルチプラットフォームをサポートする2 Dオープンソースゲームエンジンで、C++を使用して開発され、OpenGL ESに基づいてWOPhone、iOS 4.1、Android 2.1およびそれ以上のバージョン、WindowsXP&Windows 7、Windows Phone 8をサポートしています.Cocos 2 d-Xの発展の重点は、Cocos 2 dのプラットフォーム間で使用されるAPIがCocos 2 d-iPhoneと完全に互換性があることです.公式住所:http://www.cocos2d-x.org/ 
本文
最近、開発者が友盟社会化コンポーネントSDKを統合するのを手伝う過程で、Cocos 2 d-xゲームが統合過程で調子が悪いことを発見し、Android Cocos 2 d-xゲーム統合友盟社会化共有コンポーネントに関する文章を整理し、本稿に従って統合した.簡単にゲームの中で微博(新浪微博、微信、QQ空間、人人網などのプラットフォームを含む)などの機能を共有することができます.本人のレベルが限られているため、他の開発者のより良い統合を助けるために、何か間違いがあったり、より良い方法があることを指摘してほしい.
友盟社会化コンポーネントはActivityに依存する必要があるため、Cocos 2 d-xゲームのActivity(Cocos 2 d Activityから統合)で呼び出す必要があります.手順は次のとおりです.
前提:友盟社会化コンポーネントAndroid SDKのjarファイル、resリソース、および対応するAndroidManifestを追加する.xml構成、友盟社会化コンポーネントSDKオンラインドキュメントを参照する.
ステップ1.ゲームActivityで静的メソッドを定義します.次の例を示します.
package com.umeng.game ;
......

public class UmengGameActivity extends Cocos2dxActivity {
    /**
     * Handler,        openShare  ,  openShare   UI    
     */
    private static Handler mHandler = null;
    /**
     *     Activity  ,     
     */
    private static Activity mActivity = null;
    /**
     *   Social SDK  ,  SDK Controller
     */
    private static UMSocialService mController = UMServiceFactory.getUMSocialService(
            		"com.umeng.cocos2dx", RequestType.SOCIAL);

    /**
     * onCreate  
     */
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mActivity = this;
    }


    /**
     *   cocos2d-x c++  ,  .so    umenggame。  ,          .so   
     */
    static {
        System.loadLibrary("umenggame");
    }

    /**
     * @Title:  openShareBoard
     * @Description: 
     *            openShare  ,           
     * @throws
     */
    public static void openShareBoard() {
        mHandler = new Handler(Looper.getMainLooper());
        mHandler.postDelayed(new Runnable() {

            @Override
            public void run() {
                if (mActivity != null) {
                    /**
                     *         、QQ  、     Handler,  SSO  
                     *   
                     *      :       SSO         com.sina.sso  src  ,
                     *              libs、res                . 
                     */
                    mController.getConfig().setSsoHandler(new SinaSsoHandler());
                    mController.getConfig().setSsoHandler(new QZoneSsoHandler(mActivity));
                    mController.getConfig().setSsoHandler(new TencentWBSsoHandler());
                    
                    //              
                    mController.openShare(mActivity, false);
                }
            }
        }, 100);
    }
}

プロジェクトディレクトリは次のとおりです.
Android Cocos2d-x游戏集成友盟社会化组件分享功能_第1张图片
図1
ステップ2、jni層においてAndroid中のUmengGameActivityを呼び出すopenShareBoard方法を実現する.例えばここではopenUmengShareJniと名付けられ、ヘッダファイルは「yourjni.h」、実装ファイルはYourJni.cpp.
…...
//      
void YourJni::openUmengShareJni()
{
	JniMethodInfo methodInfo  ;
           //    UmengGameActivity     openShareBoard
	bool isHave = JniHelper::getStaticMethodinfo( methodInfo,       
	                          “com/umeng/game/UmengGameActivity”, “openShareBoard”, “()V”) ;
	
	if ( isHave )
	{
		 //     UmengGameActivity   umeng        
		 methodInfo.env->CallStaticVoidMethod( methodInfo .classID, methodInfo.methodID );
	}
}

…...

ステップ3.Cocos 2 d-xのUmengGameScene(CCLayerから派生するクラスで、あなたの対応するクラスに置き換える必要がある)にボタンを宣言し、このボタンをクリックすると、友盟の共有プラットフォーム選択パネルを開く.(ここではincludeステップ2でjniメソッドopenUmengShareJniのヘッダファイルを定義する必要があります)
…...
include  “yourjni.h” 
…...

bool UmengGameScene::init()
{
        …...
        …...

    /**
     *       
     *    1 : 	        
     *    2 :              
     *    3 : 	         
     *    4 :                
     */
     CCMenuItemImage *umengShareBtn = CCMenuItemImage::create( "start_normal.png",  
				"start_pressed.png", this, menu_selector(AppDelegate::openUmengShare)); 		
	//          
	umengShareBtn->setPosition( ccp(CCDirector::sharedDirector()->getWinSize().width - 20,  20)); 

	//           
	CCMenu *menu = CCMenu::menuWithItems(umengShareBtn, NULL);
 	menu->setPosition(CCPointZero);

	//          
	this->addChild(menu,1);

	…...
	…...
	return true ;
}

//         
void UmengGameScene::openUmengShare()
{
	//    jni  
	openUmengShareJni();
}

前述の共有ボタンをクリックすると、図2に示すパネルが表示され、統合に成功しました.
Android Cocos2d-x游戏集成友盟社会化组件分享功能_第2张图片
図2
友盟社会化コンポーネントの概要
友盟社会化コンポーネントは国内初のモバイル応用にソーシャル機能と社会化統計分析を統合するツールである.応用に迅速に社会化の分かち合い、登録、評論、好きな機能を備えさせ、リアルタイムで全面的な社会化データ統計分析サービスを提供する.公式住所:http://www.umeng.com/component_social .