AWS Mobile Blog

AWS Mobile SDK for iOS 2.2.0

by Yosuke Matsuda | on | Permalink | Comments |  Share

We have made a few significant changes in this version of the SDK. In this post, I am going to highlight those changes and show how you can update your code to incorporate them.

No More Third-Party Frameworks

The AWS Mobile SDK for iOS 2.2.0 no longer includes third-party frameworks. This change simplifies the SDK integration and avoids the duplicate symbols compiler error some of our developers have encountered. If your project contains the following frameworks from the previous version of the AWS Mobile SDK, you can remove them:

  • Bolts.framework
  • FMDB.framework
  • GZIP.framework
  • Mantle.framework
  • Reachability.framework
  • TMCache.framework
  • UICKeyChainStore.framework
  • XMLDictionary.framework

We prefixed these libraries with AWS and included them in AWSCore.framework. In most cases, you do not see these changes because these third-party libraries are not exposed to the developer. Bolts is the one exception.

You need to rename Bolts classes and change the prefix from BF to AWS. For example, the following code snippet

 AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager];
AWSS3TransferManagerUploadRequest *uploadRequest = [AWSS3TransferManagerUploadRequest new];
// Configure uploadRequest

[[transferManager upload:uploadRequest] continueWithBlock:^id(BFTask *task) {
    // Do something with the response
    return nil;
}];

must be rewritten to

 AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager];
AWSS3TransferManagerUploadRequest *uploadRequest = [AWSS3TransferManagerUploadRequest new];
// Configure uploadRequest

[[transferManager upload:uploadRequest] continueWithBlock:^id(AWSTask *task) {
    // Do something with the response
    return nil;
}];

These classes must be updated:

  • BFTask -> AWSTask
  • BFExecutor -> AWSExecutor

If your app uses some of these third-party libraries, please grab a copy directly from each provider.

No More Service JSON Files

Starting with 2.2.0, you do not need to drag and drop service JSON files anymore. The previous versions of the SDK included the following JSON files:

  • autoscaling-2011-01-01.json
  • cognito-identity-2014-06-30.json
  • cognito-sync-2014-06-30.json
  • dynamodb-2012-08-10.json
  • ec2-2014-06-15.json
  • elasticloadbalancing-2012-06-01.json
  • email-2010-12-01.json
  • kinesis-2013-12-02.json
  • lambda-2015-03-31.json
  • machinelearning-2014-12-12.json
  • mobileanalytics-2014-06-30.json
  • monitoring-2010-08-01.json
  • s3-2006-03-01.json
  • sdb-2009-04-15.json
  • sns-2010-03-31.json
  • sqs-2012-11-05.json
  • sts-2011-06-15.json

These service definitions are now embedded in the frameworks; you do not have to import them manually. Please remove them if your project contains them. We believe these two changes considerably simplify the integration of the frameworks.

AWSMobileAnalytics Framework

Amazon Mobile Analytics client used to be a part of AWSCore. It did not have a dedicated framework like other AWS services. Starting with 2.2.0, we spun off AWSMobileAnalytics as an independent framework. The way you import AWSMobileAnalytics has been changed, so please update your project configuration accordingly.

Integrating AWSMobileAnalytics Framework

If you are using frameworks, you need to add AWSMobileAnalytics.framework to your project in addition to AWSCore.framework. Make sure you link libsqlite3.dylib and libz.dylib, and SystemConfiguration.framework. As a reminder, you no longer need the third-party frameworks and service definition JSON files. You can remove them if your project already has them.

If you use CocoaPods, you need to modify your Podfile:

 pod 'AWSCore'

to

 pod 'AWSMobileAnalytics'

to pick up the Amazon Mobile Analytics client.

Importing Frameworks

The import statement has been changed for AWSMobileAnalytics. You need to update

 #import <AWSCore/AWSCore.h>

to

 #import <AWSMobileAnalytics/AWSMobileAnalytics.h>

After you update the integration of the SDK, your code should compile and work as before.

Talk to Us

We would like to hear from you. Ask questions or share feedback on GitHub issues or the AWS Developer Forum.