Amplify project setup
For this section you will set up a skeleton project so that Amplify categories can be added to it.
1. Create a new project
Open Xcode. From the menu bar, select "File -> New -> Project..."
Select iOS tab, choose Application type as App and then click on Next.
Fill in the following for your project:
- Product Name: MyAmplifyApp
- Interface: SwiftUI
- Language: Swift
- Tap
Next
After tapping Next, select where you would like to save your project, then tap Create. In this example, you will choose: ~/Developer
You should now have an empty iOS project without Amplify.
2. Install Amplify Libraries
To start adding the Amplify Libraries to your iOS project, open your project in Xcode and select File > Add Packages...
Enter the Amplify iOS GitHub repo URL (https://github.com/aws-amplify/amplify-swift
) into the search bar and hit Enter. Wait for the result to load.
You'll see the Amplify iOS repository rules for which version of Amplify you want Swift Package Manager to install. Choose the dependency rule Up to Next Major Version, as it will use the latest compatible version of the dependency that can be detected from the main
branch, then click Add Package.
Lastly, choose which of the libraries you want added to your project. Always select the Amplify library. The "Plugin" to install depends on which categories you are using:
-
API: AWSAPIPlugin
-
Analytics: AWSPinpointAnalyticsPlugin
-
Auth: AWSCognitoAuthPlugin
-
DataStore: AWSDataStorePlugin
-
Geo: AWSLocationGeoPlugin
-
Storage: AWSS3StoragePlugin
Note: AWSPredictionsPlugin is not currently supported through Swift Package Manager due to different minimum iOS version requirements. Support for this will eventually be added.
Select all that are appropriate, then click Add Package.
You can always go back and modify which SPM packages are included in your project by opening the Package Dependencies tab for your project: Click on the Project file in the Xcode navigator, then click on your project's icon, then select the Package Dependencies tab.
Before starting this step, please make sure you close Xcode.
Open a terminal and change directories to your project. For example, if you created your project in the folder ~/Developer
, you can:
cd ~/Developer/MyAmplifyApp
In order to initialize your project with the CocoaPods package manager, execute the command:
pod init
After doing this, you should see a newly created file called Podfile
. This file is used to describe what packages your project depends on.
Update the file to include the Amplify
pod:
target 'MyAmplifyApp' do use_frameworks! pod 'Amplify'end
To download and install the Amplify pod into your project, execute the command:
pod install --repo-update
After doing this, you should now see file called MyAmplifyApp.xcworkspace
. You are required to use this file from now on instead of the .xcodeproj file. To open your workspace, execute the command:
xed .
This should open the newly generated MyAmplifyApp.xcworkspace in Xcode.
3. Provision the backend with Amplify CLI
To start provisioning resources in the backend, change directories to your project directory and run amplify init
:
cd ~/Developer/MyAmplifyApp/amplify init
Enter the following when prompted:
? Enter a name for the project MyAmplifyApp? Enter a name for the environment dev? Choose your default editor: Visual Studio Code? Choose the type of app that you're building ios? Do you want to use an AWS profile? Yes? Please choose the profile you want to use default
Upon successfully running amplify init
, you should see two new created files in your project directory: amplifyconfiguration.json
and awsconfiguration.json
. These two files must be manually added to your project so that they are bundled with your application. This is required so that Amplify libraries know how to reach your provisioned backend resources.
To add these configuration files to your project, open finder within your project and drag both amplifyconfiguration.json
and awsconfiguration.json
to the Xcode window, under your project's folder as seen in this screenshot:
- Enable Copy items if needed if not already enabled
- For “Added folders”, have Create groups selected.
- For “Add to targets”, make sure the app target (MyAmplifyApp) is checked.
Click Finish to add these files to your project as shown in this screenshot:
Now you can build (Cmd+b
) and run (Cmd+r
) your application.
4. Initialize Amplify in the application
Open AppDelegate.swift or MyAmplifyApp.swift and add import Amplify
at the top of the file:
import Amplify
Update the following function to verify that Amplify can be compiled into your project:
func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { do { try Amplify.configure() } catch { print("An error occurred setting up Amplify: \(error)") } return true}
Note: If your app conforms to the App
protocol, you can use your own AppDelegate
class. Implement an AppDelegate
and point Swift UI's UIApplicationDelegateAdaptor
property wrapper to it, as below.
class AppDelegate: NSObject, UIApplicationDelegate { func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil ) -> Bool { do { try Amplify.configure() } catch { print("An error occurred setting up Amplify: \(error)") } return true }}@mainstruct MyAmplifyApp: App { @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene { WindowGroup { ContentView() } }}
Build your project (Cmd+b
), then you have successfully added the Amplify library to your project and you should be able to run the application.
Optionally, if you'd like to see additional log messages of what amplify is doing during configuration, you can turn on verbose logging before calling Amplify.configure()
:
do { Amplify.Logging.logLevel = .verbose // Configure Amplify as usual... try Amplify.configure() // ...
Re-running the application with verbose logging on, you will see the following messages:
[Amplify] Configuring[Amplify] Configuration: nil
Next steps
Congratulations! You've created a skeleton app and are ready to start adding Amplify categories to your application. The following are some categories that you can start to build into your application:
- Analytics - for logging metrics and understanding your users
- API (GraphQL) - for adding a GraphQL endpoint to your app
- API (REST) - for adding a REST endpoint to your app
- Authentication - for managing your users
- DataStore - for making it easier to program for a distributed data store for offline and online scenarios
- Geo - to use location data and map UI components.
- Predictions - to detect text, images, and more!
- Storage - store complex objects like pictures and videos to the cloud.