Coder Social home page Coder Social logo

dsaliberti / amplify-swift Goto Github PK

View Code? Open in Web Editor NEW

This project forked from aws-amplify/amplify-swift

0.0 0.0 0.0 22.5 MB

A declarative library for application development using cloud services.

License: Apache License 2.0

Shell 0.60% Ruby 0.05% C 4.17% Objective-C 0.02% Swift 95.12% Mermaid 0.03%

amplify-swift's Introduction

Amplify Library for Swift

AWS Amplify

AWS Amplify provides a declarative and easy-to-use interface across different categories of cloud operations. Our default implementation works with Amazon Web Services (AWS), but AWS Amplify is designed to be open and pluggable for any custom backend or service.

The Amplify Library for Swift is layered on the AWS SDK for Swift, which was released as Developer Preview last year. This allows for access to the AWS SDK for Swift for a breadth of service-centric APIs.

We deeply appreciate your feedback on this Developer Preview as we work towards our General Availability launch: GitHub Discussion or File a Bug Report.

API Documentation

Getting Started Guide

CircleCI Discord

Features/APIs

  • 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 - for adding location-based capabilities to your app.
  • Storage - store complex objects like pictures and videos to the cloud.

All services and features not listed above are supported via the Swift SDK or if supported by a category can be accessed via the Escape Hatch like below:

guard let plugin = try Amplify.Storage.getPlugin(for: "awsS3StoragePlugin") as? AWSS3StoragePlugin else {
    print("Unable to to cast to AWSS3StoragePlugin")
    return
}

let awsS3 = plugin.getEscapeHatch()
let input: HeadBucketInput = HeadBucketInput()
let task = awsS3.headBucket(input: input) { result in
    switch result {
    case .success(let response):
        print(response)
    case .failure(let error):
        print(error)
    }
}

Platform Support

Amplify supports iOS 13+ and macOS 10.15+. Support for watchOS and tvOS is coming in future releases.

License

This library is licensed under the Apache 2.0 License.

Installation

Amplify requires Xcode 13.4 or higher to build.

For more detailed instructions, follow the getting started guides in our documentation site

Swift Package Manager

  1. Swift Package Manager is distributed with Xcode. To start adding the Amplify Libraries to your iOS project, open your project in Xcode and select File > Add Packages.

    Add package dependency

  2. Enter the Amplify Library for Swift GitHub repo URL (https://github.com/aws-amplify/amplify-swift) into the search bar.

  3. You'll see the Amplify Library for Swift repository rules for which version of Amplify you want Swift Package Manager to install. Choose Up to Next Major Version and enter 2.0.0 as the minimum version for the Dependency Rule, then click Add Package.

    Dependency version options

  4. 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

    Select dependencies

    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 under the Project section, then select the Package Dependencies tab.

  5. In your app code, explicitly import a plugin when you need to add a plugin to Amplify, access plugin options, or access a category escape hatch.

    import Amplify
    import AWSAPIPlugin
    import AWSDataStorePlugin
    
    // ... later
    
    func initializeAmplify() {
        do {
            try Amplify.add(AWSAPIPlugin())
            // and so on ...
            try Amplify.configure()
        } catch {
            assertionFailure("Error initializing Amplify: \(error)")
        }
    }

    If you're just accessing Amplify category APIs (e.g., Auth.signIn() or Storage.uploadFile()), you only need to import Amplify:

    import Amplify
    
    // ... later
    
    func doUpload() {
        Amplify.Storage.uploadFile(...)
    }

Reporting Bugs/Feature Requests

Open Bugs Open Questions Feature Requests Closed Issues

We welcome you to use the GitHub issue tracker to report bugs or suggest features.

When filing an issue, please check existing open, or recently closed, issues to make sure somebody else hasn't already reported the issue. Please try to include as much information as you can. Details like these are incredibly useful:

  • Expected behavior and observed behavior
  • A reproducible test case or series of steps
  • The version of our code being used
  • Any modifications you've made relevant to the bug
  • Anything custom about your environment or deployment

Open Source Contributions

We welcome any and all contributions from the community! Make sure you read through our contribution guide here before submitting any PR's. Thanks! ♥️

amplify-swift's People

Contributors

5d avatar ameter avatar ashiemke avatar atierian avatar brennanmke avatar daohoangson avatar dependabot[bot] avatar diegocstn avatar dnys1 avatar drochetti avatar harsh62 avatar haverchuck avatar iartemiev avatar jpeddicord avatar kneekey23 avatar kyungpyoda avatar lawmicha avatar manaswi223 avatar minbi avatar mlabieniec avatar palpatim avatar phantumcode avatar royjit avatar ruiguoamz avatar ruisebas avatar rusik avatar siegerts avatar thisisabhash avatar wooj2 avatar yeung-wah avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.