つぶやきをしてみましょう。
まず、下記のフレームワークを追加します。
Twitter.framework
objective-c関係のファイルはiOSフォルダに格納します。
今回はObjCCalls.hとObjCCall.mmファイルを新規作成して、そこにツイート機能を組み込んでいきます。

class ObjCCalls
{
public:
void TwitterPost();
};
#include "ObjCCalls.h"
#import <Twitter/Twitter.h>
void ObjCCalls::TwitterPost()
{
NSString* tweet = [NSString stringWithUTF8String:"tweetTest"];
if([TWTweetComposeViewController canSendTweet])
{
UIViewController *myViewController = [UIApplication sharedApplication].keyWindow.rootViewController;
TWTweetComposeViewController *twitterVC = [[TWTweetComposeViewController alloc]init];
[twitterVC setInitialText: tweet];
twitterVC.completionHandler = ^(TWTweetComposeViewControllerResult res){
[myViewController dismissViewControllerAnimated:YES completion: nil];
};
[myViewController presentViewController: twitterVC animated:YES completion: nil];
}
else {
tweet = [NSString stringWithFormat: @"%@%@",@"http://twitter.com/intent/tweet?text=",tweet];
tweet = [tweet stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:tweet]];
}
tweet = nil;
}
次にcocos2d-x側を編集します
class HelloWorld : public cocos2d::CCLayer {
public:
~HelloWorld();
HelloWorld();
private:
void twitterTapped();
};
キーポイントはCC_PLATFORM_IOSでiOS専用にファイルをインクルードしている所ですな。
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
#include "ObjCCalls.h"
#endif
HelloWorld::HelloWorld()
{
CCSize s = CCDirector::sharedDirector()->getWinSize();
CCMenuItemImage* btnTwitter = CCMenuItemImage::create("btnTwitter_OFF.png",
"btnTwitter_ON.png",
this,
menu_selector(HelloWorld::twitterTapped));
CCMenu* menu = CCMenu::create(btnTwitter, NULL);
menu->setPosition(ccp(s.width/2, s.height/2));
this->addChild(menu);
}
void HelloWorld::twitterTapped()
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
ObjCCalls* objc = new ObjCCalls();
objc->TwitterPost();
delete objc;
objc = NULL;
#endif
}
他にもこの機能を利用してGameCenterでスコアを呼び出したり、
送信したり今までの資産を利用出来ると思います。
#ifで囲っているので、Android側にはObjCCalls.hやObjCCalls.mmファイルをコピーする必要はありません。