-
What's new in App Clips
Explore the latest updates to App Clips! Discover how we've made your App Clip even easier to build with improvements to the size limit as well as CloudKit and keychain usage. We'll also show you how to use our validation tool to verify your App Clip and automate workflows for your advanced App Clip experiences using App Store Connect.
Ressources
Vidéos connexes
WWDC21
WWDC20
-
Rechercher dans cette vidéo…
-
-
4:41 - Read your CloudKit public database from your App Clip
// Read your CloudKit public database from your App Clip let container = CKContainer.default() let publicDatabase = container.publicCloudDatabase let record = try await publicDatabase.record(for: CKRecord.ID(recordName: "A928D582-9BB6-E9C5-7881-E4EAF615E0CD")) if let title = record["Title"] as? String, let description = record["Description"] as? String { print(“Fetched a food item from CloudKit: \(title) \(description)") } -
6:03 - Read and Write from your App Clip's keychain
// Write authentication token to App Clip keychain let addSecretsQuery: [String: Any] = [ kSecClass as String: kSecClassGenericPassword, kSecValueData as String: "smoothie-secret".data(using: .utf8), kSecAttrLabel as String: "foodsample-appclip" ] SecItemAdd(addSecretsQuery as CFDictionary, nil) // Read authentication token from app or App Clip var readSecretsQuery: [String: Any] = [ kSecClass as String: kSecClassGenericPassword, kSecReturnAttributes as String: true, kSecAttrLabel as String: "foodsample-appclip", kSecReturnData as String: true ] var secretsCopy: AnyObject? SecItemCopyMatching(readSecretsQuery as CFDictionary, &secretsCopy) -
7:10 - Get your App Clip resource ID
# Get the App Clip resource ID GET /v1/apps/1234567890/appClips?filter[bundleId]=com.example.foodsample.Clip # Response { "data": { "attributes": { "bundleId": "com.example.foodsample.Clip" }, "id": "726ad1bb-3e1b-40eb-a986-d8a9897e4f1e" } } -
7:25 - Upload a header image for the advanced App Clip experience
# Upload a header image for the advanced App Clip experience POST /v1/appClipAdvancedExperienceImages { "data": { "type": "appClipAdvancedExperienceImages", "attributes": { "fileName": "Hero_image_US.png", "fileSize": 43500 } } } # Response { "data": { "attributes": "..." "id": "91c52741-832b-48a2-8935-1797655edbe7" } } -
7:34 - Create the advanced App Clip experience
# Create advanced App Clip experience POST /v1/appClipAdvancedExperiences { "data": { "type": "appClipAdvancedExperiences", "attributes": { "action": “OPEN", "businessCategory": "FOOD_AND_DRINK", "defaultLanguage": "EN", "isPoweredBy": true, "link": "https://fruta.example.com/restauraunt/simply_salad", "place": { "names": [ "Caffe Macs" ], "mapAction": "RESTAURANT_ORDER_FOOD", "displayPoint": { "coordinates": { "latitude": 37.33611, "longitude": -122.00731 }, "source": "CALCULATED" } } }, "relationships": { "appClip": { "data": { "type": "appClip", "id": "726ad1bb-3e1b-40eb-a986-d8a9897e4f1e" } }, "headerImage": { "data": { "type": "appClipAdvancedExperienceImages", "id": "91c52741-832b-48a2-8935-1797655edbe7" } } }, "included": { "type": "appClipAdvancedExperienceLocalizations", "attributes": { "language": "EN", "subtitle": "Fresh salad every day", "title": "Simply Salad" } } } }
-