Skip to main content

iOS Buy SDK

The iOS Buy SDK provides a typed Swift interface to the Storefront API. Use it to fetch products, manage carts, and produce a checkoutUrl you can hand to Checkout Kit.


Anchor to What the Buy SDK doesWhat the Buy SDK does

The Buy SDK wraps the Storefront API in typed Swift methods. Each capability has a recommended alternative:

TaskBuy SDKAlternative
Fetch products and collectionsYes (typed Swift interface)Direct Storefront API calls
Create and manage cartsYes (typed Swift interface)Direct Storefront API calls
Present checkoutNo (use Checkout Kit)Checkout Kit


Anchor to Step 1: Generate an access tokenStep 1: Generate an access token

To generate an access token, you can generate one in the Shopify admin. Alternatively, you can create a custom app and use authorization code grant.


Anchor to Step 2: Make your products and collections availableStep 2: Make your products and collections available

After you've generated an access token, you need to make products and collections available to your custom app to access them from your app. After the products and collections are available, you can retrieve them using their respective IDs.

Tip

If you have many products or collections, then you can use bulk actions to make them available in one step.

Anchor to Make a product availableMake a product available

  1. From your Shopify admin, go to Products.
  2. From the Products page, click the product you want to make available.
  3. Next to SALES CHANNELS AND APPS click Manage.
  4. In the Sales channels and apps dialog box, select the box next to the name of your custom app.

Anchor to Make a collection availableMake a collection available

  1. From your Shopify admin, go to Products and click Collections.
  2. From the Collections page, click the collection you want to make available.
  3. Next to SALES CHANNELS AND APPS click Manage.
  4. In the Sales channels and apps dialog box, select the box next to the name of your custom app.

Anchor to Step 3: Install the SDKStep 3: Install the SDK

Add the Buy SDK to your project using Swift Package Manager:

Package.swift

dependencies: [
.package(url: "https://github.com/Shopify/mobile-buy-sdk-ios", from: "12.0.0")
]

Or in Xcode: File > Add Package Dependencies and enter https://github.com/Shopify/mobile-buy-sdk-ios.


Anchor to Step 4: Initialize the clientStep 4: Initialize the client

Create a client instance with your shop domain and Storefront API access token:

Swift

import Buy

let client = Graph.Client(
shopDomain: "{shop}.myshopify.com",
apiKey: "{your_storefront_access_token}"
)

Anchor to Step 5: Fetch productsStep 5: Fetch products

Query the Storefront API to get products. Save the variant ID for creating a cart:

Swift

import Buy

func fetchProducts() {
let query = Storefront.buildQuery { $0
.products(first: 10) { $0
.edges { $0
.node { $0
.id()
.title()
.description()
.featuredImage { $0
.url()
}
.variants(first: 1) { $0
.edges { $0
.node { $0
.id()
.title()
.price { $0
.amount()
.currencyCode()
}
}
}
}
}
}
}
}
client.queryGraphWith(query) { result, error in
if let products = result?.products.edges {
for edge in products {
let product = edge.node
print("Product: \(product.title)")
}
}
}
}

Anchor to Step 6: Create a cartStep 6: Create a cart

Use the variant ID to create a cart and get a checkoutUrl:

Swift

import Buy

func createCart(variantId: GraphQL.ID) {
let input = Storefront.CartInput.create(
lines: .value([
Storefront.CartLineInput.create(merchandiseId: variantId, quantity: .value(1))
])
)
let mutation = Storefront.buildMutation { $0
.cartCreate(input: input) { $0
.cart { $0
.id()
.checkoutUrl() // Use this URL with Checkout Kit
}
.userErrors { $0
.field()
.message()
}
}
}
client.mutateGraphWith(mutation) { result, error in
if let cart = result?.cartCreate?.cart {
let checkoutUrl = cart.checkoutUrl
// Pass this URL to Checkout Kit to present checkout
print("Checkout URL: \(checkoutUrl)")
}
}
}

Anchor to Step 7: Present checkout with Checkout KitStep 7: Present checkout with Checkout Kit

With the checkoutUrl from the cart, use Checkout Kit to present checkout:

Swift

import ShopifyCheckoutSheetKit

func presentCheckout(checkoutUrl: URL) {
ShopifyCheckoutSheetKit.present(checkout: checkoutUrl, from: self, delegate: self)
}

See Embed Checkout Kit for complete checkout setup.


Set up universal links to integrate your app with Safari. When a buyer taps a link to your website, then your app opens if they have it installed.

Note

Your online store automatically hosts the Apple app site association file at /.well-known/apple-app-site-association.

  1. From your Shopify admin, go to Apps.
  1. Click Develop apps.
  2. Click the name of your app.
  3. Click API Integrations.
  4. In the Storefront API integration section, click Configure.
  5. Expand the iOS Buy SDK configuration section.
  6. Enter your Apple App ID.
  7. Select Use iOS universal links.


Shopify support covers issues with the iOS Buy SDK itself, but not general mobile app development. Here's how to get help:

Find a Shopify Partner for hire in our ecosystem of talented development agencies.

Ask questions and share knowledge with other Shopify developers.

Report bugs or request features for the iOS Buy SDK.


Was this page helpful?