Passion+Action+Sincerely=Success!

週末にのみ趣味でコーディングするおやじの備忘録

SwiftベースのiOSゲームアプリに、プレイ動画共有サービスのKamcordを組み込んでみた

Swiftで書いたiOS Gameアプリに、Kamcordを組み込んでみた。

 

Kamcordは、プレイ動画の共有サービスで、Android/iOSの両方をサポートしている。

 

ゲームセンターで上手い人がプレイしている時は、その周りに多くの人が集まって見てたよね。「なるほど、この難しいレベルは、あーやって攻略するんだー」とか、上手い人からいろいろテクニックを盗んだ記憶があるよね。当然、ゲームを上手にプレイ出来たら、友達に見せびらかしたい。「ねー、見て見て見て、俺ってすごくなーい?」。そんなバイラル効果を狙ったサービスだ。

 

まず、Swiftで書いたコードからObjective-CAPIをコールする方法を勉強する必要があったので、以下のページを参考に、WrapperクラスのKamcordBridgeクラスを作って実装したので、備忘録として残しておこうと思う。

How to call Objective C code from Swift - Stack Overflow

 

Step1. Kamcord.frameworkをプロジェクトに組み込む。以下に従えば簡単。

https://docs.kamcord.com/documents/platform/ios/getting-started/

 

Step2. Kamcord.frameworkのObjective-C APIをコールするために、KamcordBridgeクラスをプロジェクトに作成する。

 

ゲーム自体はSwiftベースだが、KamcordBridgeクラスのファイルはObjective-Cで作る。

f:id:diinosimple:20141123162735p:plain

すると、Bridging-Headerを作成するか,Xcodeに聞かれるので、Yesとする。すると、以下のように勝手に(ProjectName)-Bridging-Header.hが作成される。

f:id:diinosimple:20141123163017p:plain

ここに、作成したクラスヘッダを定義する。上記では、#import "KamcordBridge.h"

 

Step3. KamcordBridgeクラス内は、Objective-Cで書けるので、ここからKamcord.frameworkのAPIを呼ぶぞ。

 

以下のような感じ。

//KamcordBridge.h
#Import <Foundation/Foundation.h>
#import <Kamcord/Kamcord.h>

@interface KamcordBridge : NSObject

- (void)setDeveloperKey:(NSString *)key
developerSecret:(NSString *)secret
 appName:(NSString *)appName
parentViewController:(UIViewController *)parentViewController;

- (void)startRecording;
- (void)stopRecording;
- (void)showView;

@end

//KamcordBridge.mm
#import "KamcordBridge.h"
@implementation KamcordBridge

- (void)setDeveloperKey:(NSString *)key developerSecret:(NSString *)secret appName:(NSString *)appName
parentViewController:(UIViewController *)parentViewController {
[Kamcord setDeveloperKey:key developerSecret:secret appName:appName parentViewController:parentViewController];
}

- (void)startRecording {
  [Kamcord startRecording];
}

-(void)stopRecording {
[Kamcord stopRecording];
}

-(void)showView {
[Kamcord showView];
}

@end

 

Step4.  あとはSwiftのコードから、KamcordBrigeクラスのAPIを呼べるぞ。

 

ViewDidLoad()から、初期化のため、以下をコールする。

KamcordBridge().setDeveloperKey("test", developerSecret: "test", appName: "Test", parentViewController: self)

 

もちろん"Test"ではなく、KamcordのDashbordから入手した、自分のアプリ用のDeveloper Key, Secret, AppNameをセットしてくれ!

 

録画を開始するためには、以下のようにコールする。

KamcordBridge().startRecording()

録画を終了するためには、以下のようにコールする。

KamcordBridge().stopRecording()

んで、最後に録画したプレイ動画の共有用UIを以下のようにコールする。

KamcordBridge().showView()

プレイ後、以下のように表示されれば成功だぜ!

f:id:diinosimple:20141123171439p:plain