前回はゲーム画面をキャプチャした画像を、アルバムに保存する方法を説明しました。
今回はキャプチャした画像を twitter で共有する方法を説明したいと思います。
ゲーム画面をキャプチャして twitter で画像を共有する・インデックス
- 新規プロジェクトの作成(SpriteKit Game テンプレート)
- フレームワークのインポート
- ViewController へツイートのメソッドを記述
- キャプチャのメソッドの記述
- シーンから ViewController のツイートメソッドの呼び出し
ゲーム画面をキャプチャして twitter で画像を共有する・詳細手順
-
新規プロジェクトの作成(SpriteKit Game テンプレート)
Xcode のメニューから File -> New -> Project… を選択し、SpriteKit Game のテンプレートを新規作成します。
-
フレームワークのインポート
-
ViewController へツイートのメソッドを記述
先ほど追加したフレームワーク(Social.h)を ViewController.h にインポートし、インターフェースにメソッド名を記述します。ソースコード全体は以下のようになります。
ViewController.h
[code]
#import
#import
#import@interface ViewController : UIViewController
– (void)showTweetSheet:(NSData *)image;
@end
[/code]
ViewController.m にツイートのメソッドを記述します。ViewController.m
[code]
– (void)showTweetSheet:(NSData *)image
{
SLComposeViewController *tweetSheet = [SLComposeViewController
composeViewControllerForServiceType:
SLServiceTypeTwitter];tweetSheet.completionHandler = ^(SLComposeViewControllerResult result) {
switch(result) {
// This means the user cancelled without sending the Tweet
case SLComposeViewControllerResultCancelled:
break;
// This means the user hit ‘Send’
case SLComposeViewControllerResultDone:
break;
}
};[tweetSheet setInitialText:@”ゲーム画面のツイートサンプル”];
if (![tweetSheet addImage:[UIImage imageWithData:image]]) {
NSLog(@”Unable to add the image!”);
}if (![tweetSheet addURL:[NSURL URLWithString:@”http://twitter.com/”]]){
NSLog(@”Unable to add the URL!”);
}[self presentViewController:tweetSheet animated:NO completion:^{
NSLog(@”Tweet sheet has been presented.”);
}];
}
[/code] -
キャプチャのメソッドの記述
シーンファイルから ViewController のメソッド呼び出すため、シーンのヘッダファイルに ViewController.h をインポートします。ソースコード全体は以下のようになります。
MyScene.h
[code]
#import
#import “ViewController.h”@interface MyScene : SKScene
@end
[/code]
続いて画面をクリックしたとき、キャプチャを行うメソッドを touchesBegan: へ記述します。MyScene.m
[code]
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[self captureGameScreen];
}
[/code] -
シーン から ViewController のツイートメソッドの呼び出し
上記で記述した captureGameScreen を記述します。画面のキャプチャが完了したとき、(3)の ViewController メソッドへキャプチャ画像を引数で渡し、ツイート共有を実行します。
MyScene.m
[code]
– (void)captureGameScreen {
CGRect rect = self.frame;
UIGraphicsBeginImageContextWithOptions(rect.size, NO, [UIScreen mainScreen].scale);
[self.view drawViewHierarchyInRect:rect afterScreenUpdates:YES];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData *dataSaveImage = UIImagePNGRepresentation(image);_VC = (ViewController *)[UIApplication sharedApplication].delegate.window.rootViewController;
[_VC showTweetSheet:(dataSaveImage)];
}
[/code]
まとめ
ゲーム体験をソーシャルメディア等で共有することで、プレイヤーの達成感をより満たすことができます。
twitter やそのほかの SNS によるゲーム体験の共有は、今日のゲームにおいては実装すべき機能のうちのひとつだと言えます。多少面倒でも頑張って実装すれば、ゲームのダウンロード数にいい影響が生まれるかもしれませんね。
この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。