がおまる開発ブログ

cocos2d-xやlevelhelperを使って iPhone/Androidアプリの作り方を解説します

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

cocos2d-xからツイートする [iOS版]

cocos2d-xからiOSの資産であるツイート機能を利用して、
つぶやきをしてみましょう。

まず、下記のフレームワークを追加します。

Twitter.framework

objective-c関係のファイルはiOSフォルダに格納します。
今回はObjCCalls.hとObjCCall.mmファイルを新規作成して、そこにツイート機能を組み込んでいきます。

s_20130115_0.png

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ファイルをコピーする必要はありません。



スポンサーサイト

コメント

はじめまして。
ブログ参考にさせて頂いております。
levelhelperも買ってみようと思います。

こちらのツイートボタンのコードを試してみたのですが、何かこちらで失敗したようで、動きませんでした。

ブレークしてログをみてみると
myViewControllerのアドレスが0になってて何も起きません;;

アドバイス頂ければ幸いです。m_m

  • 2013/01/25(金) 21:32:49 |
  • URL |
  • やま #SFo5/nok
  • [ 編集 ]

>やまさん
はじめまして。
ブログをご覧頂きありがとうございます!

考えられるとすると、
AppController.mmの内容がおかしい可能性があります。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

// Override point for customization after application launch.

// Add the view controller's view to the window and display.
window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]];
EAGLView *__glView = [EAGLView viewWithFrame: [window bounds]
pixelFormat: kEAGLColorFormatRGBA8
depthFormat: GL_DEPTH_COMPONENT16
preserveBackbuffer: NO
sharegroup: nil
multiSampling: NO
numberOfSamples:0 ];

// Use RootViewController manage EAGLView
viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];
viewController.wantsFullScreenLayout = YES;
viewController.view = __glView;

// Set RootViewController to window
if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0)
{
// warning: addSubView doesn't work on iOS6
[window addSubview: viewController.view];
}
else
{
// use this method on ios6
[window setRootViewController:viewController];
}

[window makeKeyAndVisible];

[[UIApplication sharedApplication] setStatusBarHidden: YES];

cocos2d::CCApplication::sharedApplication()->run();
return YES;
}

もし動かない場合は、
ソースをこちらのメールに送信してください。

お返事ありがとうございます!

お返事ありがとうございます〜!

AppController.mmですね。了解です。
再度ソースの方を見直してみたいと思います。

これからも更新楽しみにしております!
ではでは〜m_m

  • 2013/01/26(土) 04:05:12 |
  • URL |
  • やま #SFo5/nok
  • [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://gaomar.blog.fc2.com/tb.php/7-9bbc2bb7
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。