最後に、iOS 9から追加されたReplayKitというフレームワークを使ってプレー動画の撮影とシェアをできるようにします。
まずはReplayKit.frameworkをプロジェクトに追加します。プロジェクト設定の「General」→「Linked Frameworks and Libraries」からReplayKit.frameworkを追加してください。
SetCharScene.swiftに撮影開始処理を追加します。
import ReplayKit class SetCharScene: SKScene { // 省略 override func didMoveToView(view: SKView) { // 省略 if !RPScreenRecorder.sharedRecorder().recording { RPScreenRecorder.sharedRecorder().startRecordingWithMicrophoneEnabled(false, handler: { error in }) } } // 省略 }
次に撮影完了処理とシェア機能を追加します。GameScene.swiftを以下のように修正してください。
import ReplayKit class GameScene: SKScene, SKPhysicsContactDelegate { // 省略 override func update(currentTime: NSTimeInterval) { chars.forEach { char in char.stateMachine.updateWithDeltaTime(currentTime) if let charState = char.stateMachine.currentState as? Char.CharState where charState.enableToAttack() { enemyList.enemiesCloseToPoint(char.frame.origin, distance: 50).forEach { $0.life -= charState.power char.stateMachine.enterState(Char.StayState.self) if $0.life <= 0 { $0.physicsBody?.node?.removeFromParent() $0.physicsBody?.node?.removeAllActions() if enemyList.isAllEnemyRemoved() { // 省略 let rootViewController = UIApplication.sharedApplication().delegate?.window??.rootViewController RPScreenRecorder.sharedRecorder().stopRecordingWithHandler { viewController, error in viewController?.previewControllerDelegate = self rootViewController?.presentViewController(viewController!, animated: true, completion: nil) } } } } } } } // 省略 } extension GameScene: RPPreviewViewControllerDelegate { func previewControllerDidFinish(previewController: RPPreviewViewController) { dispatch_async(dispatch_get_main_queue(), { previewController.dismissViewControllerAnimated(true, completion: nil) }) } }
以上で撮影機能とシェア機能の実装が完了しました。
この状態で起動すると、最初に撮影許可ポップアップが出てきます。ちなみにシミュレーターではReplayKitが使えないので、試すときは実機を使うようにしてください。
許可のポップアップは1回OKを押すと2回目以降は確認せずに撮影します。もし1回目で撮影許可しなかった場合は、2回目以降も確認ポップアップが現れます。そしてプレーが完了すると以下のように動画プレビュー画面が表示されます。
左下のメニューからFacebookやTwitterへのシェアを行えます。
startRecordingWithMicrophoneEnabledの第1引数をtrueにすれば、動画にマイク音声も入力可能です。実況動画を撮るときに便利そうな機能です。
RPScreenRecorder.sharedRecorder().startRecordingWithMicrophoneEnabled(true, handler: { error in })
マイク付きで起動すると先ほどと少し違うポップアップが表示されます。
今回はReplayKitという新しい機能を使ってみましたがいかがでしたでしょうか?
次回はこのプロジェクトを、2016年秋リリースといわれているSwift 3.0に対応しようと思いますので、どうぞお楽しみに。
今回実装したソースコードは、こちらからダウンロードできます。
田町のベンチャーで働くエンジニア。
仕事ではiPhoneアプリの開発やRailsを使ったWebサービス開発を行っている。最近のマイブームはUnityを使った3Dゲーム開発。
Copyright © ITmedia, Inc. All Rights Reserved.