Front-End Web & Mobile
AWS Mobile SDK for iOS 2.2.0
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.