メニュー
AWS Mobile SDK
iOS 開発者ガイド

iOS 用 SDK のセットアップ

AWS Mobile SDK for iOS を使い始めるには、SDK を設定して新しいプロジェクトを作成するか、SDK を既存のプロジェクトに統合することができます。サンプルを実行して、SDK の仕組みを理解することもできます。

SDK を使用するには、開発マシンに次のものをインストールします。

  • Xcode 7 以降

  • iOS 8 以降

iOS GitHub リポジトリ用の AWS Mobile SDK でソースコードを表示できます。

AWS Mobile SDK for iOS を既存のアプリケーションに組み込む

SDK に含まれているサンプルは、既に設定されているスタンドアロンプロジェクトです。また、独自の既存のプロジェクトに SDK を統合することができます。SDK をプロジェクトにインポートするには、次の 3 つの方法のいずれかを選択します。

  • Cocoapods

  • Carthage

  • 動的なフレームワーク

注記

複数の方法で SDK をインポートすると、SDK の重複するコピーがプロジェクトにロードされ、コンパイラエラーが発生します。

CocoaPodsCarthageフレームワーク
CocoaPods
  1. AWS Mobile SDK for iOS は、CocoaPods から入手できます。プロジェクト *.xcodeproj ファイルを含むフォルダから次のコマンドを実行して、CocoaPods をインストールします。

    $ gem install cocoapods

    ..メモ :: システム設定に応じて、次のように、sudo を使用して管理者としてコマンドを実行する必要があります。

    $ sudo gem install cocoapods

    $ pod setup

    $ pod init

  2. プロジェクトディレクトリ (*.xcodeproj ファイルのあるディレクトリ) で、Podfile という名前の空のテキストファイル (ファイル拡張子なし) を開き、次の行をファイルに追加します。myAppName を自身のアプリ名に置き換えます。また、使用しないサービスのポッドを削除することもできます。たとえば、AWSAutoScaling を使用しない場合は、AWSAutoScaling pod を削除するか、または含めないでください。

    source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' use_frameworks! target :'myAppName' do pod 'AWSAutoScaling' pod 'AWSCloudWatch' pod 'AWSCognito' pod 'AWSCognitoIdentityProvider' pod 'AWSDynamoDB' pod 'AWSEC2' pod 'AWSElasticLoadBalancing' pod 'AWSIoT' pod 'AWSKinesis' pod 'AWSLambda' pod 'AWSLex' pod 'AWSMachineLearning' pod 'AWSMobileAnalytics' pod 'AWSPinpoint' pod 'AWSPolly' pod 'AWSRekognition' pod 'AWSS3' pod 'AWSSES' pod 'AWSSimpleDB' pod 'AWSSNS' pod 'AWSSQS' end
  3. 次のコマンドを実行します。

    $ pod install

  4. Xcode で、*.xcworkspace を開き、SDK の使用を開始します。

    注記

    *.xcodeproj を開かないでください。ワークスペースの代わりにこのプロジェクトファイルを開くと、エラーが発生します。

Carthage
  1. Carthage の最新バージョンをインストールします。

  2. 以下を Cartfile に追加します。

    github "aws/aws-sdk-ios"
  3. 次のコマンドを実行します。

    $ carthage update

  4. プロジェクトが Xcode で開いている場合は、Target を選択します。[General] タブで、埋め込みバイナリを検索し、その後、[General] タブを選択します。

  5. [Add Other] ボタンを選択し、Carthage>Build>iOSAWS<#ServiceName#>.framework ファイルに移動して、AWSCore.framework および必要な他のサービスのフレームワークを選択します。プロンプトが表示されても [Destination: Copy items if needed] チェックボックスを選択しないでください。

    • AWSCore.framework

    • AWSAutoScaling.framework

    • AWSCloudWatch.framework

    • AWSCognito.framework

    • AWSCognitoIdentityProvider.framework

    • AWSDynamoDB.framework

    • AWSEC2.framework

    • AWSElasticLoadBalancing.framework

    • AWSIoT.framework

    • AWSKinesis.framework

    • AWSLambda.framework

    • AWSLex.framework

    • AWSMachineLearning.framework

    • AWSMobileAnalytics.framework

    • AWSPinpoint.framework

    • AWSPolly.framework

    • AWSRekognition.framework

    • AWSS3.framework

    • AWSSES.framework

    • AWSSimpleDB.framework

    • AWSSNS.framework

    • AWSSQS.framework

  6. [Target] の [Build Phases] タブで、左上の [+] ボタンを選択してから、[New Run Script Phase] を選択します。

# ビルド段階を次のように設定します。このフェーズが [Embed Frameworks] フェーズを下回っていることを確認します。

Shell /bin/sh bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/AWSCore.framework/strip-frameworks.sh" Show environment variables in build log: Checked Run script only when installing: Not checked Input Files: Empty Output Files: Empty
フレームワーク
  1. http://aws.amazon.com/mobile/sdk から SDK をダウンロードします。SDK は、aws-ios-sdk-#.#.# という名前の圧縮ファイルアーカイブに格納されます。#.「#」はバージョン番号を表します。バージョン 2.5.0 の場合、ファイル名は aws-ios-sdk-2.5.0 です。

  2. プロジェクトが Xcode で開いている場合は、[Target] を選択します。[General] タブで、埋め込みバイナリを検索してから、[+] ボタンを選択します。

  3. [Add Other] を選択します。AWS<#ServiceName#>.framework ファイルに移動し、AWSCore.framework および、必要とするその他のサービスフレームワークを選択します。プロンプトが表示されたら [Destination: Copy items if needed] チェックボックスを選択します。

    • AWSCore.framework

    • AWSAutoScaling.framework

    • AWSCloudWatch.framework

    • AWSCognito.framework

    • AWSCognitoIdentityProvider.framework

    • AWSDynamoDB.framework

    • AWSEC2.framework

    • AWSElasticLoadBalancing.framework

    • AWSIoT.framework

    • AWSKinesis.framework

    • AWSLambda.framework

    • AWSLex.framework

    • AWSMachineLearning.framework

    • AWSMobileAnalytics.framework

    • AWSPinpoint.framework

    • AWSPolly.framework

    • AWSRekognition.framework

    • AWSS3.framework

    • AWSSES.framework

    • AWSSimpleDB.framework

    • AWSSNS.framework

    • AWSSQS.framework

  1. [Target] の [Build Phases] タブで、左上の [+] ボタンをクリックしてから、[New Run Script Phase] を選択します。

  2. ビルド段階を次のように設定します。このフェーズが [Embed Frameworks] フェーズを下回っていることを確認します。

    Shell /bin/sh bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/AWSCore.framework/strip-frameworks.sh" Show environment variables in build log: Checked Run script only when installing: Not checked Input Files: Empty Output Files: Empty

SDK を新しいバージョンに更新する

このセクションでは、新しい SDK がリリースされたときの変更を取得する方法について説明します。

CocoaPodsCarthageフレームワーク
CocoaPods

プロジェクトディレクトリで次のコマンドを実行します。CocoaPods を自動的に取得して変更します。

$ pod update

注記

pod update コマンドが失敗した場合、Podfile.lock および Pods/ を削除し、pod install を実行して正常に SDK をインストールします。

Carthage

プロジェクトディレクトリで次のコマンドを実行します。Carthage は、新しい変更をフレームワークに自動的に更新します。

$ carthage update

フレームワーク
  1. Xcode で プロジェクトナビゲータ の次のフレームワークを選択し、[delete] キーを押します。その後、[Move to Trash] を選択します。

    • AWSCore.framework

    • AWSAutoScaling.framework

    • AWSCloudWatch.framework

    • AWSCognito.framework

    • AWSCognitoIdentityProvider.framework

    • AWSDynamoDB.framework

    • AWSEC2.framework

    • AWSElasticLoadBalancing.framework

    • AWSIoT.framework

    • AWSKinesis.framework

    • AWSLambda.framework

    • AWSLex.framework

    • AWSMachineLearning.framework

    • AWSMobileAnalytics.framework

    • AWSPinpoint.framework

    • AWSPolly.framework

    • AWSRekognition.framework

    • AWSS3.framework

    • AWSSES.framework

    • AWSSimpleDB.framework

    • AWSSNS.framework

    • AWSSQS.framework

  2. SDK の新しいバージョンを含めるには、フレームワークの手動インストールプロセスに従ってください。

ATS との連携の準備

App Transport Security (ATS) 機能は、iOS 9.0 SDK 以降、アプリが一部の AWS サービスとどのように連携するかに影響を与える可能性があります。

iOS 9.0 SDK (または Xcode 7) 以降でアプリケーションをコンパイルする場合は、アプリが呼び出す AWS サービスに正常に接続するための追加手順を完了する必要があります。詳細については、「ATS を使用するためのアプリの準備」を参照してください。

AWS 認証情報

Amazon Cognito を認証情報プロバイダーとして使用して、モバイルアプリから AWS サービスにアクセスすることをおすすめします。Amazon Cognito は、アプリに認証情報を埋め込むことなく、AWS サービスにアクセスするための安全なメカニズムを提供します。詳細については、「Amazon Cognito for iOS」を参照してください。

また、AWS Identity and Access Management (IAM) を AWS Security Token Service AssumeRole API と組み合わせて使用することもできます。IAM を選択する場合は、ロールのポリシーのスコープを最小限にして、使用されているサービスに対して必要なアクションのみを実行できるようにします。

AWS 資格情報を使用した SDK API のインポートと呼び出し

このセクションでは、アプリを AWS サービスに接続する方法の概要を説明します。特定のサービスを呼び出す方法の詳細については、左側のメニューを参照してください。

  1. アプリケーションデリゲートの AWSCore ヘッダーをインポートします。

    SwiftObjective-C
    Swift
    import AWSCore import AWSCognito
    Objective-C
    #import <AWSCore/AWSCore.h> #import <AWSCognito/AWSCognito.h>

    Amazon Cognito API は AWS Identity サービスを提供し、AWS によるほとんどのモバイルアプリ機能の実装に使用されるため、含まれています。

  2. デフォルトのサービス設定を作成し、次のコードスニペットを、application:didFinishLaunchingWithOptions: アプリケーションデリゲートメソッドに追加して、AWS ID プロバイダーを確立します。

    SwiftObjective-C
    Swift
    let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YourIdentityPoolId") let configuration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: credentialProvider) AWSServiceManager.default().defaultServiceConfiguration = configuration
    Objective-C
    AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 identityPoolId:@"YourIdentityPoolId"]; AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 credentialsProvider:credentialsProvider]; AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;

    YourIdentityPoolId の値は、作成した Amazon Cognito ID プールに固有です。詳細については、「Amazon Cognito for iOS」を参照してください。

  3. アプリケーションが呼び出す各 AWS サービスのインポートステートメントを含めます。

    SwiftObjective-C
    Swift
    import AWSS3 import AWSDynamoDB import AWSSQS import AWSSNS ...
    Objective-C
    #import <AWSCore/AWSCore.h> #import <AWSS3/AWSS3.h> #import <AWSDynamoDB/AWSDynamoDB.h> #import <AWSSQS/AWSSQS.h> #import <AWSSNS/AWSSNS.h> ...
  4. AWS サービスを呼び出します。以下の例では、SDK AWSS3TransferManger API を介して Amazon S3 に呼び出しを行います。

    SwiftObjective-C
    Swift
    let transferManager = AWSS3TransferManager.default() let uploadRequest = AWSS3TransferManagerUploadRequest() uploadRequest.bucket = "myBucket" uploadRequest.key = "myTestFile.txt" uploadRequest.body = uploadingFileURL uploadRequest.contentLength = fileSize transferManager.upload(uploadRequest).continueWith(executor: AWSExecutor.mainThread(), block: { (task:AWSTask<AnyObject>) -> Any? in // Do something with the response })
    Objective-C
    AWSS3Transfermanager *transferManager = [AWSS3Transfermanager defaultS3TransferManager]; AWSS3TransferManagerUploadRequest *uploadRequest = [AWSS3TransferManagerUploadRequest new]; uploadRequest.bucket = yourBucket; uploadRequest.key = yourKey; uploadRequest.body = yourDataURL; uploadRequest.contentLength = [NSNumber numberWithUnsignedLongLong:fileSize]; [[transferManager upload:uploadRequest] continueWithBlock:^id(AWSTask *task) { // Do something with the response return nil; }];

    注記

    ほとんどのサービスクライアントクラスには、default をフレームワーク名に追加するという規約で命名されたデフォルトクライアントを取得するシングルトンメソッドを持っています。AWSS3TransferManager.default() (Swift) または defaultS3TransferManager(Objective-C) は、前述のコードスニペットの例です。

    このシングルトンメソッドは defaultServiceConfiguration でサービスクライアントを作成します。このサービスクライアントは前述の手順中にアプリケーションデリゲートで初期化されました。このメソッドでは、クライアントへの強力な参照が保持されます。

ログ記録

この SDK のバージョン 2.5.4 では、ロギングは柔軟で高速なオープンソースのロギングフレームワークである CocoaLumberjack SDK を使用しています。コンソールに記録された簡潔なメッセージやログファイルへの詳細なメッセージなど、出力ターゲットごとのログレベルを設定する機能を含む多くの機能をサポートしています。

CocoaLumberjack のロギングレベルは、レベルが冗長に設定されている不可的なレベルの場合、冗長以下のレベルのすべてのメッセージがログに記録されます。また、ニーズに合わせてカスタムロギングを設定することもできます。詳細については、「CocoaLumberjack ロギングレベル」を参照してください。

ログレベルを変更する

AWSCore をインポートして呼び出すことにより、開発サイクルのフェーズに合わせてログレベルを変更することができます

SwiftObjective-C
Swift

AWSDDLog.sharedInstance().logLevel = .verbose

次のロギングレベルオプションを使用できます。

  • .off

  • .error

  • .warning

  • .info

  • .debug

  • .verbose

App Store に公開する前にログレベルを .off に設定することをお勧めします。

Objective-C

[AWSDDLog sharedInstance].logLevel = AWSDDLogLevelVerbose;

次のロギングレベルオプションを使用できます。

  • AWSDDLogLevelOff

  • AWSDDLogLevelError

  • AWSDDLogLevelWarning

  • AWSDDLogLevelInfo

  • AWSDDLogLevelDebug

  • AWSDDLogLevelVerbose

App Store に公開する前にログレベルを AWSDDLogLevelOff に設定することをお勧めします。

ターゲティングログ出力

CocoaLumberjack は、ログをファイルに転送したり、Xcode コンソールと統合するフレームワークとして使用することができます。

ファイルへのロギングを初期化するには、次のコードを使用します。

SwiftObjective-C
Swift
let fileLogger: AWSDDFileLogger = AWSDDFileLogger() // File Logger fileLogger.rollingFrequency = TimeInterval(60*60*24) // 24 hours fileLogger.logFileManager.maximumNumberOfLogFiles = 7 AWSDDLog.add(fileLogger)
Objective-C
AWSDDFileLogger *fileLogger = [[AWSDDFileLogger alloc] init]; // File Logger fileLogger.rollingFrequency = 60 * 60 * 24; // 24 hour rolling fileLogger.logFileManager.maximumNumberOfLogFiles = 7; [AWSDDLog addLogger:fileLogger];

Xcode コンソールへのロギングを初期化するには、次のコードを使用します。

SwiftObjective-C
Swift
AWSDDLog.add(AWSDDTTYLogger.sharedInstance) // TTY = Xcode console
Objective-C
[AWSDDLog addLogger:[AWSDDTTYLogger sharedInstance]]; // TTY = Xcode console

詳細については、GitHub の「CocoaLumberjack」を参照してください。

サンプルアプリ

AWS Mobile SDK for iOS には、一般的なユースケースを示すサンプルアプリが含まれています。

Amazon Cognito Your User Pools Sample (Objective-C)

このサンプルは、ユーザーがサインアップとサインインするアプリケーションの認証された部分を表示する方法を示しています。

AWS サービスの説明。

Amazon Cognito Sync Sample (SwiftObjective-C)

このサンプルは、モバイルアプリデータを安全に管理して同期する方法を示しています。また、Facebook、Google、Login with Amazon を含むログインプロバイダを使用して一意の ID を作成する方法も示しています。

AWS サービスの説明。

Amazon DynamoDB Object Mapper Sample (SwiftObjective-C)

このサンプルは、DynamoDBObjectMapper を使用してアイテムを挿入、更新、削除、およびクエリする方法を示しています。

AWS サービスの説明。

Amazon S3 Transfer Utility Sample (SwiftObjective-C)

このサンプルは、Amazon S3 TransferUtility を使用してファイルをダウンロード/アップロードする方法を示しています。

AWS サービスの説明。

Amazon SNS モバイルプッシュと Mobile Analytics Sample (SwiftObjective-C)

このサンプルは、Amazon SNS モバイルプッシュ通知を設定し、Amazon Mobile Analytics を使用してイベントを記録する方法を示しています。

AWS サービスの説明。

Xcode にリファレンスドキュメントをインストールする

AWS Mobile SDK for iOS には、Xcode で表示できる DocSets 形式のドキュメントが含まれています。ドキュメントをインストールする最も簡単な方法は、macOS ターミナルを使用することです。

Xcode 用の DocSet をインストールするには

macOS ターミナルを開き、展開されたアーカイブを含むディレクトリに移動します。(例:

$ cd ~/Downloads/aws-ios-sdk-2.5.0

注記

前述の例の 2.5.0 を、ダウンロードした AWS Mobile SDK for iOS のバージョン番号に置き換えます。

~/Library/Developer/Shared/Documentation/DocSets という名前のディレクトリを作成します。

$ mkdir -p ~/Library/Developer/Shared/Documentation/DocSets

SDK のインストールファイルから documentation/com.amazon.aws.ios.docset を前の手順で作成したディレクトリにコピー (または移動) します。

$ mv documentation/com.amazon.aws.ios.docset ~/Library/Developer/Shared/Documentation/DocSets/

この手順で Xcode が実行されていた場合は、Xcode を再起動してください。ドキュメントを参照するには、[Help] に移動し、[Documentation and API Reference] をクリックして、[AWS Mobile SDK for iOS v2.0 Documentation] (ここで、「2.0」は適切なバージョン番号) を選択します。