SlideShare a Scribd company logo
Cocos2d-x(JS) ハンズオン #13
SNS対応(Twitter, Facebook)
Nobollel株式会社 清水友晶
清水 友晶
 Nobollel株式会社 CTO
チームビルディング
スマホアプリ開発
Cocos2d-xサポート
TECH.C.非常勤講師
 プライベートでも
Cocos2d-xに関するゲーム開発
講演活動
執筆活動
 マイブーム: Ingress
 チラ裏開発メモ: http://tks2.net/memo
 SlideShare: http://www.slideshare.net/doraemonsss
 Facebook: http://www.facebook.com/doraemonsss
Cocos2d-x(JS) ハンズオン #13「SNS対応(Twitter, Facebook)」
http://line.me/S/sticker/1085672
もくじ
 SNS対応について
 SDKBOXの復習
 SDKBOXとは
 SDKBOXの導入方法
 SNS対応してみよう
 Twitterプラグイン
 Facebookプラグイン
注意
 今回紹介するSNS対応は、OpenURLやIntentを利用し
た簡易的なものではありません
 正式なSDKを利用した本格的な対応です
 シェア機能の利用だけを目的とした場合、簡易的に済
ませてしまう方法をオススメします
 今回紹介する過程で、簡易的な利用を行うことができ
るプラグインも紹介します
SNS対応について
SNS対応
Facebook
 Facebook SDKを利用すると、次のようなことができ
ます。
 Facebookログイン
 Facebookの認証情報で利用者を認証
 シェアと送信のダイアログ
 アプリ内のコンテンツをFacebookにシェアできる
 App Events
 アプリケーション内のイベントをログ記録
 Graph API
 Graph APIの読み取りと書き込み
Fabric (Twitter)
 Fabricは、スマートフォンのアプリ開発者が体験する
よくある課題に対応するプラットフォーム
 安定性を高める
 利用者を増やす
 収益を得る
 ユーザの本人確認
 Twitter機能
 Twitterを使った本人確認
 Twitter上の会話を取り込む
SDKBOXの復習
SDKBOXサイト
http://cocos2d-x.org/sdkbox/
SDKBOXサイト
http://sdkbox.com
 最新版: SDKBOX v2.1.3
 対応プラットフォーム: iOS, Android
 プラグイン:
 アプリ内課金
 広告
 解析
 ストア
 ソーシャル
 動画
SDKBOXプラグイン
シーケンス図
SDKBOXの導入
 コマンドラインによる方法
 Cocosを利用する方法
Pythonインストール
 SDKBOXのインストールにはPythonが必要
 ただしCocos2d-xのインストールにもPythonが必要であ
るため、正常にインストールが完了していれば、その途
中でPythonもインストールしたはず
 Python v3.x
 https://www.python.org/
SDKBOXインストール
 SDKBOXプラグインのページにあるリンクから
SDKBOXのユーザ登録を行う
python -c "import urllib; s = urllib.urlopen('https://raw.githubusercontent.com/sdkbox-doc/en/master/install/install.py').read(); exec s"
SDKBOX動作確認
 SDKBOXプラグイン一覧取得
$ sdkbox list
SNS対応してみよう
プロジェクト作成
 Cocos2d-xのプロジェクトを作成します
$ cocos new SNSTest –l js
Twitter用プラグイン
 作成したプロジェクトに移動して、shareプラグイン
を適用する
$ cd SNSTest
$ sdkbox import share
Facebook用プラグイン
 続けてfacebookプラグインを適用する
$ sdkbox import facebook
Twitter対応
 TwitterでAPI Key, API Secretを取得する
 Twitterでアプリの設定を行う
https://apps.twitter.com/
Twitter対応
 res/sdkbox.jsonにTwitterのAPI Key, API Secretを
設定する
 iOSとAndroidに分かれているので注意
もちろん共通でも問題ありません
"Twitter": {
"params": {
"secret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"key": "XXXXXXXXXXXXXXXXXXXXXXXXX"
}
},
Twitter対応(iOS)
 App Transport Security(ATS)を無効にする
 info.plistに下記を追加する
 注意: ATSは2016年末には必須になります
今後SDKBOXプラグインのアップデートにより
対応されることが予想されます
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
Twitter対応(Android)
 fabricでAPI Keyを取得する
 https://fabric.io/settings/organizations
Twitter対応(Android)
 AndroidManifest.xmlを編集する
 SNSTest/frameworks/runtime-src/proj.android-
studio/app/AndroidManifest.xml
<meta-data android:name="io.fabric.ApiKey"
android:value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" />
プラグイン初期化
 利用前にプラグインの初期化が必要
 例: app.js ctor関数で初期化を行う
//ボタン
var item = new cc.MenuItemFont("Button", this.onTouchButton, this);
var menu = new cc.Menu(item);
menu.setPosition(size.width / 2, size.height / 2);
this.addChild(menu);
//プラグイン初期化
sdkbox.PluginShare.init();
ツイート画面表示
 ボタンが押された時の処理
onTouchButton:function (sender) {
var shareInfo = {};
shareInfo.text = "メッセージ";
shareInfo.title = "タイトル";
//shareInfo.image = "path/to/image";
shareInfo.link = "http://tks2.net";
shareInfo.showDialog = true; //ダイアログの表示
shareInfo.platform = sdkbox.SocialPlatform.Platform_Twitter;
sdkbox.PluginShare.share(shareInfo);
}
実行画面
Facebook対応(iOS)
 AppController.mmの編集
 33行目付近 Headerのインクルード
 81行目付近 didFinishLaunchingWithOptions関数内
#import <FBSDKCoreKit/FBSDKCoreKit.h>
[[FBSDKApplicationDelegate sharedInstance] application:application
didFinishLaunchingWithOptions:launchOptions];
Facebook対応(iOS)
 AppController.mmの編集
 107行目付近 applicationDidBecomeActive関数内
 132行目付近 openURL関数追加
[FBSDKAppEvents activateApp];
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
return [[FBSDKApplicationDelegate sharedInstance] application:application
openURL:url
sourceApplication:sourceApplication
annotation:annotation];
}
Facebook対応(iOS)
 info.plistの編集
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>xxxxxxxxxxxxxxx</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>xxxxxxxxxxxxxxx</string>
<key>FacebookDisplayName</key>
<string>SNSTest</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
Facebook対応(Android)
 res/values/strings.xmlの編集
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">SNSTest</string>
<string name="facebook_app_id">xxxxxxxxxxxxxxx</string>
</resources>
Facebook対応(Android)
 AndroidManifest.xmlの編集
<provider android:authorities="com.facebook.app.FacebookContentProvider_replace_with_your_app_id_"
android:exported="true" android:name="com.facebook.FacebookContentProvider" />
<provider android:authorities="com.facebook.app.FacebookContentProviderxxxxxxxxxxxxxxx"
android:exported="true" android:name="com.facebook.FacebookContentProvider" />
Facebook対応
 sdkbox_config.jsonの編集
{
"android": {
"Facebook": {
"debug": false,
"app_id": “xxxxxxxxxxxxxxx"
},
},
"ios": {
"Facebook": {
"debug": true,
"url_scheme_suffix": "",
"app_id": “xxxxxxxxxxxxxxx"
},
}
}
プラグイン初期化
 利用前にプラグインの初期化が必要
 例: app.js ctor関数で初期化を行う
//ボタン
var item = new cc.MenuItemFont("Button", this.onTouchButton, this);
var menu = new cc.Menu(item);
menu.setPosition(size.width / 2, size.height / 2);
this.addChild(menu);
//プラグイン初期化
sdkbox.PluginFacebook.init();
sdkbox.PluginFacebook.setListener({
onLogin: function(isLogin, msg) {
if (isLogin) {
sdkbox.PluginFacebook.requestPublishPermissions(["publish_actions"]);
}
},
onAPI: function(tag, data) {},
onSharedSuccess: function(data) {},
onSharedFailed: function(data) {},
onSharedCancel: function() {},
onPermission: function(isLogin, msg) {
this.share();
}
});
投稿画面表示
 ボタンが押された時の処理
onTouchButton:function (sender) {
if (sdkbox.PluginFacebook.isLoggedIn()) {
this.share();
} else {
sdkbox.PluginFacebook.login();
}
},
share:function() {
var info = new Object();
info.type = "link";
info.link = "http://www.cocos2d-x.org";
info.title = "cocos2d-x";
info.text = "Best Game Engine";
info.image = "http://cocos2d-x.org/images/logo.png";
sdkbox.PluginFacebook.dialog(info);
}
投稿画面表示
作業はここまで
参考になるサイト
 Cocos公式Wiki
http://www.cocos2d-
x.org/wiki/Cocos2d-JS
 Cocos2d-JS APIリファレンス
http://cocos2d-x.org/wiki/Reference
 Qiita
(tag: cocos2d-js)
https://qiita.com
おわり
 ありがとうございました

More Related Content

PDF
cocos2d-xにおけるBox2Dの利用方法および便利なツール
PDF
Cocos2d-x 3.2 Eclipseを利用したAndroid開発環境の構築
PPTX
Cocos2d-x(JS) ハンズオン #05「Cocos StudioとCocos2d-x (JS)との連携」
PPTX
Cocos2d-x(JS)の紹介
PDF
cocos2d-xとCocos Code IDE
PDF
Cocos2d-x v3.2を利用してシューティングゲームを作ろう!
PPTX
Cocos2d-x(JS) ハンズオン #12「Cocos2d-xとSpine」
PPTX
Cocos2d-xにおけるモバイル開発〜将来を見据えた開発〜
cocos2d-xにおけるBox2Dの利用方法および便利なツール
Cocos2d-x 3.2 Eclipseを利用したAndroid開発環境の構築
Cocos2d-x(JS) ハンズオン #05「Cocos StudioとCocos2d-x (JS)との連携」
Cocos2d-x(JS)の紹介
cocos2d-xとCocos Code IDE
Cocos2d-x v3.2を利用してシューティングゲームを作ろう!
Cocos2d-x(JS) ハンズオン #12「Cocos2d-xとSpine」
Cocos2d-xにおけるモバイル開発〜将来を見据えた開発〜

What's hot (20)

PPTX
Cocos2d-x(JS) ハンズオン #01 「はじめてのCocos2d-x (JS)」
PDF
Cocos Code IDEを使ってみた
PDF
20130912 macでcocos2d x 3.0alphaを使用した、クロスプラットフォーム開発環境構築について
PDF
Macでcocos2d-x 2.1.3を使用した、iOSアプリの開発環境構築について
PPTX
Cocos2d-x(JS) ハンズオン #11「2D物理エンジン」
PDF
Cocos2d-x公開講座 in 鹿児島
PPTX
Cocos2d-x(JS) ハンズオン #06「3rd SDKの導入を簡単にするSDKBOX」
PDF
cocos2d-xとspine
PDF
Windowsでcocos2d-x 2.1.4を使用した、Androidアプリの開発環境構築について
PDF
cocos2d-x開発事例勉強会
PDF
Cocos2d-x 3D Extension
PDF
cocos2d-x JavaScript Bindingsについて
PDF
CocoStudioとcocos2d-xの連携2
PDF
実はかんたん!ゲームエンジンCocos2d-x入門
PDF
Cocos2d-xで画像周りを自由自在に表示してみよう
PDF
cocos2d-xを利用したパズドラ風ゲームの作成
PDF
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門
PDF
cocos2d-x 3.0 新しい物理演算クラスの利用
PDF
cocos2d-xの開発に欠かせないCocosBuilderについて
PPTX
Cocos2d-x(JS) ハンズオン #09「ラベル・テキストボックス」
Cocos2d-x(JS) ハンズオン #01 「はじめてのCocos2d-x (JS)」
Cocos Code IDEを使ってみた
20130912 macでcocos2d x 3.0alphaを使用した、クロスプラットフォーム開発環境構築について
Macでcocos2d-x 2.1.3を使用した、iOSアプリの開発環境構築について
Cocos2d-x(JS) ハンズオン #11「2D物理エンジン」
Cocos2d-x公開講座 in 鹿児島
Cocos2d-x(JS) ハンズオン #06「3rd SDKの導入を簡単にするSDKBOX」
cocos2d-xとspine
Windowsでcocos2d-x 2.1.4を使用した、Androidアプリの開発環境構築について
cocos2d-x開発事例勉強会
Cocos2d-x 3D Extension
cocos2d-x JavaScript Bindingsについて
CocoStudioとcocos2d-xの連携2
実はかんたん!ゲームエンジンCocos2d-x入門
Cocos2d-xで画像周りを自由自在に表示してみよう
cocos2d-xを利用したパズドラ風ゲームの作成
cocos2d-x 3.0 + C++11で始めるゲーム開発超入門
cocos2d-x 3.0 新しい物理演算クラスの利用
cocos2d-xの開発に欠かせないCocosBuilderについて
Cocos2d-x(JS) ハンズオン #09「ラベル・テキストボックス」
Ad

Viewers also liked (15)

PPTX
Cocos2d-x(JS) ハンズオン #07「新エディタ Cocos Creator v1.0」
PPTX
Cocos2d-x(JS) ハンズオン #02 「画像表示とアクション」
PDF
cocos2d-x 開発の効率化
PPTX
Cocos2d-x(JS) ハンズオン #04「タッチイベントの使い方」
PPTX
Cocos2d-x(JS) ハンズオン #03「複数あるボタンの使い分け」
PPTX
Cocos2d-x(JS) ハンズオン #10「3D機能とVR機能」
PPTX
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
PDF
法林浩之のFIGHTING TALKS 〜生誕50周年記念試合〜
PDF
Cocos2d-xの深層 Cocos2d-x組み込みによるピュアAndroid/iOSアプリの外科手術的統合
PPTX
PayPal導入事例 CrowdWorks編
PDF
初期費用ゼロ円のマイホーム For pay palイベント
PDF
cocos2d-xハンズオン勉強会 in 名古屋
KEY
Cocos2d-xのかんたんな紹介
KEY
Cocos2d xのススメ
PDF
Cocos2d xをさらにさわってみよう!
Cocos2d-x(JS) ハンズオン #07「新エディタ Cocos Creator v1.0」
Cocos2d-x(JS) ハンズオン #02 「画像表示とアクション」
cocos2d-x 開発の効率化
Cocos2d-x(JS) ハンズオン #04「タッチイベントの使い方」
Cocos2d-x(JS) ハンズオン #03「複数あるボタンの使い分け」
Cocos2d-x(JS) ハンズオン #10「3D機能とVR機能」
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
法林浩之のFIGHTING TALKS 〜生誕50周年記念試合〜
Cocos2d-xの深層 Cocos2d-x組み込みによるピュアAndroid/iOSアプリの外科手術的統合
PayPal導入事例 CrowdWorks編
初期費用ゼロ円のマイホーム For pay palイベント
cocos2d-xハンズオン勉強会 in 名古屋
Cocos2d-xのかんたんな紹介
Cocos2d xのススメ
Cocos2d xをさらにさわってみよう!
Ad

Similar to Cocos2d-x(JS) ハンズオン #13「SNS対応(Twitter, Facebook)」 (20)

PDF
Android Lecture #01 @PRO&BSC Inc.
PDF
Cocos2d-xによる最新ゲーム開発
PDF
CocosBuilderを利用した開発の進め方
PDF
Slug 3-windows phone7helloworld-classmethod-ryuichi-nonaka
PDF
Cocos2d-x勉強会 2014/10/05
PDF
.NET Core時代のCI/CD
PPT
Cocos2d
PDF
ARコンテンツ作成勉強会:Myoを用いたVRコンテンツ開発
PDF
SUPER HIGH-TECH UNC で実現する新しい世界
PDF
Titanium もくもく会第6回 Kii Cloud と TiGPUImageView
PDF
cocos2d-xとCocosBuilder
PDF
cocos2d-xとネイティブ間の連携
PDF
cocos2d-x公開講座 in 鹿児島
PDF
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
PDF
Windows azure mobile services による mobile + cloud アプリケーション超高速開発
PDF
iOS(phoneGap)で facebook の
javascript SDKを動かす
PDF
かんたんなcocos2d-xの紹介
PDF
Microsoft hololens handson basic v1.5
PPTX
Windows PhoneアプリをSNSとつなげよう
PDF
Android Wear Apps
Android Lecture #01 @PRO&BSC Inc.
Cocos2d-xによる最新ゲーム開発
CocosBuilderを利用した開発の進め方
Slug 3-windows phone7helloworld-classmethod-ryuichi-nonaka
Cocos2d-x勉強会 2014/10/05
.NET Core時代のCI/CD
Cocos2d
ARコンテンツ作成勉強会:Myoを用いたVRコンテンツ開発
SUPER HIGH-TECH UNC で実現する新しい世界
Titanium もくもく会第6回 Kii Cloud と TiGPUImageView
cocos2d-xとCocosBuilder
cocos2d-xとネイティブ間の連携
cocos2d-x公開講座 in 鹿児島
モバイルゲームの「大規模な開発」かつ「高頻度の更新」を実現するための開発環境整備の取り組み
Windows azure mobile services による mobile + cloud アプリケーション超高速開発
iOS(phoneGap)で facebook の
javascript SDKを動かす
かんたんなcocos2d-xの紹介
Microsoft hololens handson basic v1.5
Windows PhoneアプリをSNSとつなげよう
Android Wear Apps

More from Tomoaki Shimizu (8)

PDF
cocos2d-x 3.0による変更点
PDF
タワーオブスペルズ x cocos2d-x
PDF
cocos2d-xで利用できる暗号化
PDF
cocos2d-xにおけるマップエディタの利用
PDF
Macでcocos2d-x 3.0betaを使用した、クロスプラットフォーム開発環境構築について
PDF
Macでcocos2d-x 3.0alpha0を使用した、クロスプラットフォーム開発環境構築について
PDF
cocos2d-xにおけるデータ管理
PDF
cocos2d-xの概要とこれまでの進化・これからの展開
cocos2d-x 3.0による変更点
タワーオブスペルズ x cocos2d-x
cocos2d-xで利用できる暗号化
cocos2d-xにおけるマップエディタの利用
Macでcocos2d-x 3.0betaを使用した、クロスプラットフォーム開発環境構築について
Macでcocos2d-x 3.0alpha0を使用した、クロスプラットフォーム開発環境構築について
cocos2d-xにおけるデータ管理
cocos2d-xの概要とこれまでの進化・これからの展開

Cocos2d-x(JS) ハンズオン #13「SNS対応(Twitter, Facebook)」