From cfc1d8770818fb635b4b74d6bfbff7e84c5fd8bc Mon Sep 17 00:00:00 2001 From: GitHub Copilot Date: Sat, 11 Jul 2026 06:12:10 +0200 Subject: [PATCH 1/3] docs: add limited-use App Check tokens documentation for iOS - Add 'Using Limited-Use App Check Tokens' section in initialization - Include SecureAIViewModel example showing production-ready setup - Document benefits: single-use tokens, reduced attack surface - Add prerequisites for App Check configuration Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .../references/ios_setup.md | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/skills/firebase-ai-logic-basics/references/ios_setup.md b/skills/firebase-ai-logic-basics/references/ios_setup.md index a2052e24..07da060d 100644 --- a/skills/firebase-ai-logic-basics/references/ios_setup.md +++ b/skills/firebase-ai-logic-basics/references/ios_setup.md @@ -14,6 +14,32 @@ let ai = FirebaseAI.firebaseAI() let model = ai.generativeModel(modelName: "") ``` +### Using Limited-Use App Check Tokens + +For enhanced security and cost control, you can enable limited-use tokens during instantiation. This restricts each token to a single API call, reducing risk if a token is compromised: + +```swift +import FirebaseAILogic + +// Initialize with limited-use tokens enabled +let ai = FirebaseAI.firebaseAI( + backend: .googleAI(), + useLimitedUseAppCheckTokens: true +) + +// [AGENT] Replace "" with the latest model from https://firebase.google.com/docs/ai-logic/models.md.txt +let model = ai.generativeModel(modelName: "") +``` + +**Benefits:** +- Each App Check token is valid for only one API request +- Reduces attack surface if a token is intercepted +- Ideal for production applications with strict security requirements + +**Prerequisites:** +- App Check must be configured in your Firebase project +- Ensure your app's attestation provider is set up (DeviceCheck for iOS) + ## 2. SwiftUI Integration (Best Practices) Use the `@Observable` pattern to manage AI state and provide a smooth UX with @@ -81,6 +107,42 @@ struct AIView: View { } ``` +### With Limited-Use Tokens + +For enhanced security in production, use limited-use App Check tokens: + +```swift +import SwiftUI +import FirebaseAILogic + +@MainActor +@Observable +final class SecureAIViewModel { + // Initialize with limited-use tokens for enhanced security + private lazy var model = FirebaseAI.firebaseAI( + backend: .googleAI(), + useLimitedUseAppCheckTokens: true + ).generativeModel(modelName: "") + + var responseText: String = "" + var isFetching: Bool = false + var errorMessage: String? + + func generate(prompt: String) async { + isFetching = true + errorMessage = nil + defer { isFetching = false } + + do { + let response = try await model.generateContent(prompt) + self.responseText = response.text ?? "No response" + } catch { + self.errorMessage = error.localizedDescription + } + } +} +``` + ## 3. Safety Settings You can configure safety thresholds to prevent the model from generating harmful From f45a7a924ed153ad03dfaba6362ddfc58ad7538c Mon Sep 17 00:00:00 2001 From: Phushi plan music <31492366+DjNastor@users.noreply.github.com> Date: Wed, 22 Jul 2026 02:28:11 +0200 Subject: [PATCH 2/3] solution git001Update skills/firebase-ai-logic-basics/references/ios_setup.md Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- skills/firebase-ai-logic-basics/references/ios_setup.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/skills/firebase-ai-logic-basics/references/ios_setup.md b/skills/firebase-ai-logic-basics/references/ios_setup.md index 07da060d..98b2be5a 100644 --- a/skills/firebase-ai-logic-basics/references/ios_setup.md +++ b/skills/firebase-ai-logic-basics/references/ios_setup.md @@ -119,8 +119,9 @@ import FirebaseAILogic @Observable final class SecureAIViewModel { // Initialize with limited-use tokens for enhanced security + // [AGENT] Replace "" with the latest model from https://firebase.google.com/docs/ai-logic/models.md.txt private lazy var model = FirebaseAI.firebaseAI( - backend: .googleAI(), + backend: .geminiDeveloperAPI(), useLimitedUseAppCheckTokens: true ).generativeModel(modelName: "") From 5a5f66a112dfdf61c833e962032f19196352d1a4 Mon Sep 17 00:00:00 2001 From: Phushi plan music <31492366+DjNastor@users.noreply.github.com> Date: Wed, 22 Jul 2026 02:37:11 +0200 Subject: [PATCH 3/3] Update skills/firebase-ai-logic-basics/references/ios_setup.md Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- skills/firebase-ai-logic-basics/references/ios_setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skills/firebase-ai-logic-basics/references/ios_setup.md b/skills/firebase-ai-logic-basics/references/ios_setup.md index 98b2be5a..2ebc1262 100644 --- a/skills/firebase-ai-logic-basics/references/ios_setup.md +++ b/skills/firebase-ai-logic-basics/references/ios_setup.md @@ -23,7 +23,7 @@ import FirebaseAILogic // Initialize with limited-use tokens enabled let ai = FirebaseAI.firebaseAI( - backend: .googleAI(), + backend: .geminiDeveloperAPI(), useLimitedUseAppCheckTokens: true )