44
Cocos2d-x(JS) ハンズオン #13 SNS対応(Twitter, Facebook) Nobollel株式会社 清水友晶

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

Embed Size (px)

Citation preview

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

Cocos2d-x(JS)ハンズオン #13

SNS対応(Twitter, Facebook)

Nobollel株式会社清水友晶

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

清水 友晶 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

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

http://line.me/S/sticker/1085672

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

もくじ

SNS対応について

SDKBOXの復習

SDKBOXとは

SDKBOXの導入方法

SNS対応してみよう

Twitterプラグイン

Facebookプラグイン

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

注意 今回紹介するSNS対応は、OpenURLやIntentを利用した簡易的なものではありません

正式なSDKを利用した本格的な対応です

シェア機能の利用だけを目的とした場合、簡易的に済ませてしまう方法をオススメします

今回紹介する過程で、簡易的な利用を行うことができるプラグインも紹介します

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

SNS対応について

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

SNS対応

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

Facebook Facebook SDKを利用すると、次のようなことができます。

Facebookログイン

Facebookの認証情報で利用者を認証

シェアと送信のダイアログ

アプリ内のコンテンツをFacebookにシェアできる

App Events

アプリケーション内のイベントをログ記録

Graph API

Graph APIの読み取りと書き込み

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

Fabric (Twitter) Fabricは、スマートフォンのアプリ開発者が体験するよくある課題に対応するプラットフォーム

安定性を高める

利用者を増やす

収益を得る

ユーザの本人確認

Twitter機能

Twitterを使った本人確認

Twitter上の会話を取り込む

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

SDKBOXの復習

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

SDKBOXサイト

http://cocos2d-x.org/sdkbox/

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

SDKBOXサイト

http://sdkbox.com

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

最新版: SDKBOX v2.1.3

対応プラットフォーム: iOS, Android

プラグイン:

アプリ内課金

広告

解析

ストア

ソーシャル

動画

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

SDKBOXプラグイン

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

シーケンス図

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

SDKBOXの導入 コマンドラインによる方法

Cocosを利用する方法

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

Pythonインストール SDKBOXのインストールにはPythonが必要

ただしCocos2d-xのインストールにもPythonが必要であるため、正常にインストールが完了していれば、その途中でPythonもインストールしたはず

Python v3.x

https://www.python.org/

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

SDKBOXインストール SDKBOXプラグインのページにあるリンクから

SDKBOXのユーザ登録を行う

python -c "import urllib; s = urllib.urlopen('https://raw.githubusercontent.com/sdkbox-doc/en/master/install/install.py').read(); exec s"

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

SDKBOX動作確認 SDKBOXプラグイン一覧取得

$ sdkbox list

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

SNS対応してみよう

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

プロジェクト作成 Cocos2d-xのプロジェクトを作成します

$ cocos new SNSTest –l js

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

Twitter用プラグイン 作成したプロジェクトに移動して、shareプラグインを適用する

$ cd SNSTest

$ sdkbox import share

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

Facebook用プラグイン 続けてfacebookプラグインを適用する

$ sdkbox import facebook

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

Twitter対応 TwitterでAPI Key, API Secretを取得する

Twitterでアプリの設定を行うhttps://apps.twitter.com/

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

Twitter対応 res/sdkbox.jsonにTwitterのAPI Key, API Secretを設定する

iOSとAndroidに分かれているので注意もちろん共通でも問題ありません

"Twitter": {

"params": {

"secret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",

"key": "XXXXXXXXXXXXXXXXXXXXXXXXX"

}

},

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

Twitter対応(iOS) App Transport Security(ATS)を無効にする

info.plistに下記を追加する

注意: ATSは2016年末には必須になります今後SDKBOXプラグインのアップデートにより対応されることが予想されます

<key>NSAppTransportSecurity</key>

<dict>

<key>NSAllowsArbitraryLoads</key>

<true/>

</dict>

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

Twitter対応(Android) fabricでAPI Keyを取得する

https://fabric.io/settings/organizations

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

Twitter対応(Android) AndroidManifest.xmlを編集する

SNSTest/frameworks/runtime-src/proj.android-studio/app/AndroidManifest.xml

<meta-data android:name="io.fabric.ApiKey"

android:value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" />

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

プラグイン初期化 利用前にプラグインの初期化が必要

例: 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();

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

ツイート画面表示 ボタンが押された時の処理

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);

}

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

実行画面

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

Facebook対応(iOS) AppController.mmの編集

33行目付近 Headerのインクルード

81行目付近 didFinishLaunchingWithOptions関数内

#import <FBSDKCoreKit/FBSDKCoreKit.h>

[[FBSDKApplicationDelegate sharedInstance] application:application

didFinishLaunchingWithOptions:launchOptions];

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

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];

}

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

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>

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

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>

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

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" />

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

Facebook対応 sdkbox_config.jsonの編集

{

"android": {

"Facebook": {

"debug": false,

"app_id": “xxxxxxxxxxxxxxx"

},

},

"ios": {

"Facebook": {

"debug": true,

"url_scheme_suffix": "",

"app_id": “xxxxxxxxxxxxxxx"

},

}

}

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

プラグイン初期化 利用前にプラグインの初期化が必要

例: 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();

}

});

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

投稿画面表示 ボタンが押された時の処理

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);

}

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

投稿画面表示

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

作業はここまで

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

参考になるサイト

Cocos公式Wikihttp://www.cocos2d-x.org/wiki/Cocos2d-JS

Cocos2d-JS APIリファレンスhttp://cocos2d-x.org/wiki/Reference

Qiita(tag: cocos2d-js)https://qiita.com

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

おわり

ありがとうございました