LoginSignup
7
7

More than 5 years have passed since last update.

自作アプリにAWSの機能を組み込むのにAWS Mobile Hubを利用

Posted at

はじめに

AWS Advent Calendar 2015 16日目ということで「AWS Mobile Hub」を利用した話です。

AWS Mobile Hubでは画面上で機能を選択すると
AWS側の設定を自動生成してくれて、さらにiOS/Androidでそのまま動かせるファイルを吐き出してくれます。
この動作サンプルが便利!
目の前に実際に動作する物があると、それを動かしながら確認できるので話が早い!w

Amazon側の想定する使い方ではないかもしれませんが
こんな利用の仕方もあり、開発効率を上げるのに便利だった!という話です。

今回は
「自作iOSアプリに、S3利用し画像をアップロード・ダウンロードする機能を追加する場合」
にどんな手順を取ったかの記録です。

Mobile Hubさんに動作するサンプルを生成してもらう

AWSログイン後、Mobile Hub画面にて「Create new mobile project」

スクリーンショット 2015-12-15 12.49.07.png

プロジェクト名は適当に「Sample20151216」などにしておきましょうか。
で「Create Project」でプロジェクト作成。

User Data Storageボタン選択。

スクリーンショット 2015-12-15 12.50.05.png

Store user dataを選択した状態で「Save changes」で保存。

スクリーンショット 2015-12-15 12.50.16.png

画面左側メニューの「Build」から「iOS」を選択。

スクリーンショット 2015-12-15 12.51.22.png

しばらくAmazon側の自動生成を待つとダウンロードできるようになります。
(先程実行した時は約1分弱でした)

スクリーンショット 2015-12-15 12.51.43.png

ダウンロードしたらWeb上でやることは取り敢えず終了です。

自作iOSアプリにそれを組み込み

生成されたMySampleAppプロジェクトを開いて実行し動作することを確認。
そのプロジェクトを参考に、自作アプリのプロジェクトに手を入れていきます。

ライブラリ追加

AWS関連FrameworkをMySampleAppから自作プロジェクト配下にコピー。
スクリーンショット 2015-12-15 13.07.22.png

AWS関連に加えてその他のFrameworkも自作プロジェクトに追加。

スクリーンショット 2015-12-15 13.10.51.png

AWS関連ソース追加

AmazonAwsフォルダを自作プロジェクト配下にコピー。
Add Files to でフォルダごと追加しました。

画像一覧画面追加

UserFilesフォルダを自作プロジェクト配下にコピー。
Add Files to でフォルダごと追加しました。

AppDelegateに追記

AppDelegate.m
#import "AWSMobileClient.h"

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    return [[AWSMobileClient sharedInstance] didFinishLaunching:application withOptions:launchOptions];
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
    [[AWSMobileClient sharedInstance] applicationDidBecomeActive:application];
}

画面周り

動作確認用ボタンは横着してコードで生成してます。

ViewController.m
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    btn.frame = CGRectMake(20, 200, 280, 30);
    [btn setTitle:@"S3画像一覧表示" forState:UIControlStateNormal];
    [btn addTarget:self action:@selector(btn_action:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];
}

- (void)btn_action:(UIButton *)sender
{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"UserFiles" bundle:nil];
    UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"UserFiles"];

    [self.navigationController pushViewController:viewController animated:YES];
}

@end

余談

Single View Applicationで生成した場合、
初期のViewControllerはnavigationControllerの制御に乗っていません。

なので上記実装では画面が出ません。

以下の手順でnavigationControllerの画面制御に置きます。
1. StoryboardでNavigationControllerを追加。
2. NavigationControllerの「Is Initial View Controller」にチェック。
3. 自動でくっついてきているTableViewControllerを削除。
4. NavigationControllerのrootViewControllerにViewControllerを設定。

おわりに

その他の機能も一度Mobile Hubで動く物を生成すれば
自作アプリへの応用の一手目が大分楽になると思います。

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7