From b111cdffaad3198bca35ec998674fee2cff41ba4 Mon Sep 17 00:00:00 2001 From: YoungHypo Date: Sat, 21 Jun 2025 20:47:43 -0700 Subject: [PATCH 1/4] update readme.md for name changing --- firebaseai/README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/firebaseai/README.md b/firebaseai/README.md index 18813616c..75821d129 100644 --- a/firebaseai/README.md +++ b/firebaseai/README.md @@ -1,4 +1,4 @@ -# Firebase AI Sample App +# Firebase AI Quickstart This sample demonstrates how to make calls to the Gemini API via Firebase directly from your app, rather than server-side, using the @@ -10,12 +10,12 @@ from your app, rather than server-side, using the 1. Clone this repo. 1. Change into the `firebaseai` directory. -1. Open `FirebaseAISample.xcodeproj` using Xcode. +1. Open `FirebaseAIExample.xcodeproj` using Xcode. ```bash git clone https://github.com/firebase/quickstart-ios.git cd quickstart-ios/firebaseai -open FirebaseAISample.xcodeproj +open FirebaseAIExample.xcodeproj ``` ### Connect the sample to your Firebase project @@ -30,6 +30,7 @@ sample app to your Firebase project (or create a new project): - The default bundle ID is `com.google.firebase.quickstart.FirebaseAIExample` 3. Download the `GoogleService-Info.plist` for the app when prompted and save it to the `firebaseai` directory. +4. In the Firebase Console, click **AI** and select **AI Logic** to enable the Gemini Developer API and Vertex AI Gemini API. You should now be able to build and run the sample! From eae089e1d971b3fe4b8cea8610bff0cc8d64a8a2 Mon Sep 17 00:00:00 2001 From: YoungHypo Date: Sat, 21 Jun 2025 20:51:29 -0700 Subject: [PATCH 2/4] update path suffix for all submodules --- .../AccentColor.colorset/Contents.json | 0 .../AppIcon.appiconset/Contents.json | 0 .../Assets.xcassets/Contents.json | 0 .../Models/ChatMessage.swift | 0 .../Preview Assets.xcassets/Contents.json | 0 .../Screens/ConversationScreen.swift | 0 .../ViewModels/ConversationViewModel.swift | 0 .../Views/BouncingDots.swift | 0 .../Views/ErrorDetailsView.swift | 0 .../Views/ErrorView.swift | 0 .../Views/MessageView.swift | 0 .../project.pbxproj | 60 +++++++++---------- .../FirebaseAIExample (iOS).xcscheme | 12 ++-- .../AccentColor.colorset/Contents.json | 0 .../AppIcon.appiconset/Contents.json | 0 .../Assets.xcassets/Contents.json | 0 .../ContentView.swift | 0 .../FirebaseAIExampleApp.swift} | 0 .../Preview Assets.xcassets/Contents.json | 0 .../Screens/FunctionCallingScreen.swift | 0 .../ViewModels/FunctionCallingViewModel.swift | 0 .../AccentColor.colorset/Contents.json | 0 .../AppIcon.appiconset/Contents.json | 0 .../Assets.xcassets/Contents.json | 0 .../Preview Assets.xcassets/Contents.json | 0 .../Screens/PhotoReasoningScreen.swift | 0 .../ViewModels/PhotoReasoningViewModel.swift | 0 .../AccentColor.colorset/Contents.json | 0 .../AppIcon.appiconset/Contents.json | 0 .../Assets.xcassets/Contents.json | 0 .../Preview Assets.xcassets/Contents.json | 0 .../Screens/GenerateContentScreen.swift | 0 .../ViewModels/GenerateContentViewModel.swift | 0 33 files changed, 36 insertions(+), 36 deletions(-) rename firebaseai/{ChatSample => ChatExample}/Assets.xcassets/AccentColor.colorset/Contents.json (100%) rename firebaseai/{ChatSample => ChatExample}/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename firebaseai/{ChatSample => ChatExample}/Assets.xcassets/Contents.json (100%) rename firebaseai/{ChatSample => ChatExample}/Models/ChatMessage.swift (100%) rename firebaseai/{ChatSample => ChatExample}/Preview Content/Preview Assets.xcassets/Contents.json (100%) rename firebaseai/{ChatSample => ChatExample}/Screens/ConversationScreen.swift (100%) rename firebaseai/{ChatSample => ChatExample}/ViewModels/ConversationViewModel.swift (100%) rename firebaseai/{ChatSample => ChatExample}/Views/BouncingDots.swift (100%) rename firebaseai/{ChatSample => ChatExample}/Views/ErrorDetailsView.swift (100%) rename firebaseai/{ChatSample => ChatExample}/Views/ErrorView.swift (100%) rename firebaseai/{ChatSample => ChatExample}/Views/MessageView.swift (100%) rename firebaseai/{FirebaseAISample => FirebaseAIExample}/Assets.xcassets/AccentColor.colorset/Contents.json (100%) rename firebaseai/{FirebaseAISample => FirebaseAIExample}/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename firebaseai/{FirebaseAISample => FirebaseAIExample}/Assets.xcassets/Contents.json (100%) rename firebaseai/{FirebaseAISample => FirebaseAIExample}/ContentView.swift (100%) rename firebaseai/{FirebaseAISample/FirebaseAISampleApp.swift => FirebaseAIExample/FirebaseAIExampleApp.swift} (100%) rename firebaseai/{FirebaseAISample => FirebaseAIExample}/Preview Content/Preview Assets.xcassets/Contents.json (100%) rename firebaseai/{FunctionCallingSample => FunctionCallingExample}/Screens/FunctionCallingScreen.swift (100%) rename firebaseai/{FunctionCallingSample => FunctionCallingExample}/ViewModels/FunctionCallingViewModel.swift (100%) rename firebaseai/{GenerativeAIMultimodalSample => GenerativeAIMultimodalExample}/Assets.xcassets/AccentColor.colorset/Contents.json (100%) rename firebaseai/{GenerativeAIMultimodalSample => GenerativeAIMultimodalExample}/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename firebaseai/{GenerativeAIMultimodalSample => GenerativeAIMultimodalExample}/Assets.xcassets/Contents.json (100%) rename firebaseai/{GenerativeAIMultimodalSample => GenerativeAIMultimodalExample}/Preview Content/Preview Assets.xcassets/Contents.json (100%) rename firebaseai/{GenerativeAIMultimodalSample => GenerativeAIMultimodalExample}/Screens/PhotoReasoningScreen.swift (100%) rename firebaseai/{GenerativeAIMultimodalSample => GenerativeAIMultimodalExample}/ViewModels/PhotoReasoningViewModel.swift (100%) rename firebaseai/{GenerativeAITextSample => GenerativeAITextExample}/Assets.xcassets/AccentColor.colorset/Contents.json (100%) rename firebaseai/{GenerativeAITextSample => GenerativeAITextExample}/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename firebaseai/{GenerativeAITextSample => GenerativeAITextExample}/Assets.xcassets/Contents.json (100%) rename firebaseai/{GenerativeAITextSample => GenerativeAITextExample}/Preview Content/Preview Assets.xcassets/Contents.json (100%) rename firebaseai/{GenerativeAITextSample => GenerativeAITextExample}/Screens/GenerateContentScreen.swift (100%) rename firebaseai/{GenerativeAITextSample => GenerativeAITextExample}/ViewModels/GenerateContentViewModel.swift (100%) diff --git a/firebaseai/ChatSample/Assets.xcassets/AccentColor.colorset/Contents.json b/firebaseai/ChatExample/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from firebaseai/ChatSample/Assets.xcassets/AccentColor.colorset/Contents.json rename to firebaseai/ChatExample/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/firebaseai/ChatSample/Assets.xcassets/AppIcon.appiconset/Contents.json b/firebaseai/ChatExample/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from firebaseai/ChatSample/Assets.xcassets/AppIcon.appiconset/Contents.json rename to firebaseai/ChatExample/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/firebaseai/ChatSample/Assets.xcassets/Contents.json b/firebaseai/ChatExample/Assets.xcassets/Contents.json similarity index 100% rename from firebaseai/ChatSample/Assets.xcassets/Contents.json rename to firebaseai/ChatExample/Assets.xcassets/Contents.json diff --git a/firebaseai/ChatSample/Models/ChatMessage.swift b/firebaseai/ChatExample/Models/ChatMessage.swift similarity index 100% rename from firebaseai/ChatSample/Models/ChatMessage.swift rename to firebaseai/ChatExample/Models/ChatMessage.swift diff --git a/firebaseai/ChatSample/Preview Content/Preview Assets.xcassets/Contents.json b/firebaseai/ChatExample/Preview Content/Preview Assets.xcassets/Contents.json similarity index 100% rename from firebaseai/ChatSample/Preview Content/Preview Assets.xcassets/Contents.json rename to firebaseai/ChatExample/Preview Content/Preview Assets.xcassets/Contents.json diff --git a/firebaseai/ChatSample/Screens/ConversationScreen.swift b/firebaseai/ChatExample/Screens/ConversationScreen.swift similarity index 100% rename from firebaseai/ChatSample/Screens/ConversationScreen.swift rename to firebaseai/ChatExample/Screens/ConversationScreen.swift diff --git a/firebaseai/ChatSample/ViewModels/ConversationViewModel.swift b/firebaseai/ChatExample/ViewModels/ConversationViewModel.swift similarity index 100% rename from firebaseai/ChatSample/ViewModels/ConversationViewModel.swift rename to firebaseai/ChatExample/ViewModels/ConversationViewModel.swift diff --git a/firebaseai/ChatSample/Views/BouncingDots.swift b/firebaseai/ChatExample/Views/BouncingDots.swift similarity index 100% rename from firebaseai/ChatSample/Views/BouncingDots.swift rename to firebaseai/ChatExample/Views/BouncingDots.swift diff --git a/firebaseai/ChatSample/Views/ErrorDetailsView.swift b/firebaseai/ChatExample/Views/ErrorDetailsView.swift similarity index 100% rename from firebaseai/ChatSample/Views/ErrorDetailsView.swift rename to firebaseai/ChatExample/Views/ErrorDetailsView.swift diff --git a/firebaseai/ChatSample/Views/ErrorView.swift b/firebaseai/ChatExample/Views/ErrorView.swift similarity index 100% rename from firebaseai/ChatSample/Views/ErrorView.swift rename to firebaseai/ChatExample/Views/ErrorView.swift diff --git a/firebaseai/ChatSample/Views/MessageView.swift b/firebaseai/ChatExample/Views/MessageView.swift similarity index 100% rename from firebaseai/ChatSample/Views/MessageView.swift rename to firebaseai/ChatExample/Views/MessageView.swift diff --git a/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj b/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj index e16ce774c..e7ef45bc0 100644 --- a/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj +++ b/firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj @@ -12,7 +12,7 @@ 86C1F4842BC726150026816F /* FunctionCallingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86C1F4802BC726150026816F /* FunctionCallingViewModel.swift */; }; 88263BF02B239C09008AB09B /* ErrorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88263BEE2B239BFE008AB09B /* ErrorView.swift */; }; 88263BF12B239C11008AB09B /* ErrorDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 889873842B208563005B4896 /* ErrorDetailsView.swift */; }; - 8848C8332B0D04BC007B434F /* FirebaseAISampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8848C8322B0D04BC007B434F /* FirebaseAISampleApp.swift */; }; + 8848C8332B0D04BC007B434F /* FirebaseAIExampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8848C8322B0D04BC007B434F /* FirebaseAIExampleApp.swift */; }; 8848C8352B0D04BC007B434F /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8848C8342B0D04BC007B434F /* ContentView.swift */; }; 8848C8372B0D04BD007B434F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8848C8362B0D04BD007B434F /* Assets.xcassets */; }; 8848C83A2B0D04BD007B434F /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8848C8392B0D04BD007B434F /* Preview Assets.xcassets */; }; @@ -41,8 +41,8 @@ 88209C1B2B0FBDC300F64795 /* GenerateContentScreen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GenerateContentScreen.swift; sourceTree = ""; }; 88209C1D2B0FBDC300F64795 /* GenerateContentViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GenerateContentViewModel.swift; sourceTree = ""; }; 88263BEE2B239BFE008AB09B /* ErrorView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ErrorView.swift; sourceTree = ""; }; - 8848C82F2B0D04BC007B434F /* FirebaseAISample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FirebaseAISample.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 8848C8322B0D04BC007B434F /* FirebaseAISampleApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FirebaseAISampleApp.swift; sourceTree = ""; }; + 8848C82F2B0D04BC007B434F /* FirebaseAIExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FirebaseAIExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 8848C8322B0D04BC007B434F /* FirebaseAIExampleApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FirebaseAIExampleApp.swift; sourceTree = ""; }; 8848C8342B0D04BC007B434F /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; 8848C8362B0D04BD007B434F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 8848C8392B0D04BD007B434F /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; @@ -93,13 +93,13 @@ path = ViewModels; sourceTree = ""; }; - 86C1F4822BC726150026816F /* FunctionCallingSample */ = { + 86C1F4822BC726150026816F /* FunctionCallingExample */ = { isa = PBXGroup; children = ( 86C1F4812BC726150026816F /* ViewModels */, 86C1F47F2BC726150026816F /* Screens */, ); - path = FunctionCallingSample; + path = FunctionCallingExample; sourceTree = ""; }; 8802666E2B0FC39000CF7CB6 /* ViewModels */ = { @@ -147,11 +147,11 @@ DEFECAA82D7B4CCD00EF9621 /* ImagenScreen */, 88B8A9352B0FCBA700424728 /* GenerativeAIUIComponents */, 869200B22B879C4F00482873 /* GoogleService-Info.plist */, - 8848C8312B0D04BC007B434F /* FirebaseAISample */, - 8848C8452B0D051E007B434F /* GenerativeAITextSample */, - 8848C8572B0D056C007B434F /* GenerativeAIMultimodalSample */, - 88E10F432B110D5300C08E95 /* ChatSample */, - 86C1F4822BC726150026816F /* FunctionCallingSample */, + 8848C8312B0D04BC007B434F /* FirebaseAIExample */, + 8848C8452B0D051E007B434F /* GenerativeAITextExample */, + 8848C8572B0D056C007B434F /* GenerativeAIMultimodalExample */, + 88E10F432B110D5300C08E95 /* ChatExample */, + 86C1F4822BC726150026816F /* FunctionCallingExample */, 8848C8302B0D04BC007B434F /* Products */, 88209C222B0FBE1700F64795 /* Frameworks */, ); @@ -160,20 +160,20 @@ 8848C8302B0D04BC007B434F /* Products */ = { isa = PBXGroup; children = ( - 8848C82F2B0D04BC007B434F /* FirebaseAISample.app */, + 8848C82F2B0D04BC007B434F /* FirebaseAIExample.app */, ); name = Products; sourceTree = ""; }; - 8848C8312B0D04BC007B434F /* FirebaseAISample */ = { + 8848C8312B0D04BC007B434F /* FirebaseAIExample */ = { isa = PBXGroup; children = ( - 8848C8322B0D04BC007B434F /* FirebaseAISampleApp.swift */, + 8848C8322B0D04BC007B434F /* FirebaseAIExampleApp.swift */, 8848C8342B0D04BC007B434F /* ContentView.swift */, 8848C8362B0D04BD007B434F /* Assets.xcassets */, 8848C8382B0D04BD007B434F /* Preview Content */, ); - path = FirebaseAISample; + path = FirebaseAIExample; sourceTree = ""; }; 8848C8382B0D04BD007B434F /* Preview Content */ = { @@ -184,7 +184,7 @@ path = "Preview Content"; sourceTree = ""; }; - 8848C8452B0D051E007B434F /* GenerativeAITextSample */ = { + 8848C8452B0D051E007B434F /* GenerativeAITextExample */ = { isa = PBXGroup; children = ( 88209C1C2B0FBDC300F64795 /* ViewModels */, @@ -192,7 +192,7 @@ 8848C84A2B0D051F007B434F /* Assets.xcassets */, 8848C84C2B0D051F007B434F /* Preview Content */, ); - path = GenerativeAITextSample; + path = GenerativeAITextExample; sourceTree = ""; }; 8848C84C2B0D051F007B434F /* Preview Content */ = { @@ -203,7 +203,7 @@ path = "Preview Content"; sourceTree = ""; }; - 8848C8572B0D056C007B434F /* GenerativeAIMultimodalSample */ = { + 8848C8572B0D056C007B434F /* GenerativeAIMultimodalExample */ = { isa = PBXGroup; children = ( 8802666E2B0FC39000CF7CB6 /* ViewModels */, @@ -211,7 +211,7 @@ 8848C85C2B0D056D007B434F /* Assets.xcassets */, 8848C85E2B0D056D007B434F /* Preview Content */, ); - path = GenerativeAIMultimodalSample; + path = GenerativeAIMultimodalExample; sourceTree = ""; }; 8848C85E2B0D056D007B434F /* Preview Content */ = { @@ -222,7 +222,7 @@ path = "Preview Content"; sourceTree = ""; }; - 88E10F432B110D5300C08E95 /* ChatSample */ = { + 88E10F432B110D5300C08E95 /* ChatExample */ = { isa = PBXGroup; children = ( 88E10F522B11124A00C08E95 /* Models */, @@ -232,7 +232,7 @@ 88E10F482B110D5400C08E95 /* Assets.xcassets */, 88E10F4A2B110D5400C08E95 /* Preview Content */, ); - path = ChatSample; + path = ChatExample; sourceTree = ""; }; 88E10F4A2B110D5400C08E95 /* Preview Content */ = { @@ -290,9 +290,9 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 8848C82E2B0D04BC007B434F /* FirebaseAISample */ = { + 8848C82E2B0D04BC007B434F /* FirebaseAIExample */ = { isa = PBXNativeTarget; - buildConfigurationList = 8848C83D2B0D04BD007B434F /* Build configuration list for PBXNativeTarget "FirebaseAISample" */; + buildConfigurationList = 8848C83D2B0D04BD007B434F /* Build configuration list for PBXNativeTarget "FirebaseAIExample" */; buildPhases = ( 8848C82B2B0D04BC007B434F /* Sources */, 8848C82C2B0D04BC007B434F /* Frameworks */, @@ -302,14 +302,14 @@ ); dependencies = ( ); - name = FirebaseAISample; + name = FirebaseAIExample; packageProductDependencies = ( 886F95D72B17BA420036F07A /* MarkdownUI */, 886F95E22B17D6630036F07A /* GenerativeAIUIComponents */, DE26D95E2DBB3E9F007E6668 /* FirebaseAI */, ); - productName = GenerativeAISample; - productReference = 8848C82F2B0D04BC007B434F /* FirebaseAISample.app */; + productName = GenerativeAIExample; + productReference = 8848C82F2B0D04BC007B434F /* FirebaseAIExample.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ @@ -345,7 +345,7 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 8848C82E2B0D04BC007B434F /* FirebaseAISample */, + 8848C82E2B0D04BC007B434F /* FirebaseAIExample */, ); }; /* End PBXProject section */ @@ -375,7 +375,7 @@ 88263BF12B239C11008AB09B /* ErrorDetailsView.swift in Sources */, 8848C8352B0D04BC007B434F /* ContentView.swift in Sources */, 886F95D52B17BA010036F07A /* GenerateContentScreen.swift in Sources */, - 8848C8332B0D04BC007B434F /* FirebaseAISampleApp.swift in Sources */, + 8848C8332B0D04BC007B434F /* FirebaseAIExampleApp.swift in Sources */, 886F95E02B17D5010036F07A /* ConversationViewModel.swift in Sources */, 886F95DD2B17D5010036F07A /* MessageView.swift in Sources */, 886F95DC2B17BAEF0036F07A /* PhotoReasoningScreen.swift in Sources */, @@ -517,7 +517,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_ASSET_PATHS = "\"FirebaseAISample/Preview Content\""; + DEVELOPMENT_ASSET_PATHS = "\"FirebaseAIExample/Preview Content\""; DEVELOPMENT_TEAM = ""; ENABLE_PREVIEWS = YES; ENABLE_USER_SCRIPT_SANDBOXING = NO; @@ -547,7 +547,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_ASSET_PATHS = "\"FirebaseAISample/Preview Content\""; + DEVELOPMENT_ASSET_PATHS = "\"FirebaseAIExample/Preview Content\""; DEVELOPMENT_TEAM = ""; ENABLE_PREVIEWS = YES; ENABLE_USER_SCRIPT_SANDBOXING = NO; @@ -582,7 +582,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 8848C83D2B0D04BD007B434F /* Build configuration list for PBXNativeTarget "FirebaseAISample" */ = { + 8848C83D2B0D04BD007B434F /* Build configuration list for PBXNativeTarget "FirebaseAIExample" */ = { isa = XCConfigurationList; buildConfigurations = ( 8848C83E2B0D04BD007B434F /* Debug */, diff --git a/firebaseai/FirebaseAIExample.xcodeproj/xcshareddata/xcschemes/FirebaseAIExample (iOS).xcscheme b/firebaseai/FirebaseAIExample.xcodeproj/xcshareddata/xcschemes/FirebaseAIExample (iOS).xcscheme index 160714dd9..616e68298 100644 --- a/firebaseai/FirebaseAIExample.xcodeproj/xcshareddata/xcschemes/FirebaseAIExample (iOS).xcscheme +++ b/firebaseai/FirebaseAIExample.xcodeproj/xcshareddata/xcschemes/FirebaseAIExample (iOS).xcscheme @@ -16,8 +16,8 @@ @@ -45,8 +45,8 @@ @@ -68,8 +68,8 @@ diff --git a/firebaseai/FirebaseAISample/Assets.xcassets/AccentColor.colorset/Contents.json b/firebaseai/FirebaseAIExample/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from firebaseai/FirebaseAISample/Assets.xcassets/AccentColor.colorset/Contents.json rename to firebaseai/FirebaseAIExample/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/firebaseai/FirebaseAISample/Assets.xcassets/AppIcon.appiconset/Contents.json b/firebaseai/FirebaseAIExample/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from firebaseai/FirebaseAISample/Assets.xcassets/AppIcon.appiconset/Contents.json rename to firebaseai/FirebaseAIExample/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/firebaseai/FirebaseAISample/Assets.xcassets/Contents.json b/firebaseai/FirebaseAIExample/Assets.xcassets/Contents.json similarity index 100% rename from firebaseai/FirebaseAISample/Assets.xcassets/Contents.json rename to firebaseai/FirebaseAIExample/Assets.xcassets/Contents.json diff --git a/firebaseai/FirebaseAISample/ContentView.swift b/firebaseai/FirebaseAIExample/ContentView.swift similarity index 100% rename from firebaseai/FirebaseAISample/ContentView.swift rename to firebaseai/FirebaseAIExample/ContentView.swift diff --git a/firebaseai/FirebaseAISample/FirebaseAISampleApp.swift b/firebaseai/FirebaseAIExample/FirebaseAIExampleApp.swift similarity index 100% rename from firebaseai/FirebaseAISample/FirebaseAISampleApp.swift rename to firebaseai/FirebaseAIExample/FirebaseAIExampleApp.swift diff --git a/firebaseai/FirebaseAISample/Preview Content/Preview Assets.xcassets/Contents.json b/firebaseai/FirebaseAIExample/Preview Content/Preview Assets.xcassets/Contents.json similarity index 100% rename from firebaseai/FirebaseAISample/Preview Content/Preview Assets.xcassets/Contents.json rename to firebaseai/FirebaseAIExample/Preview Content/Preview Assets.xcassets/Contents.json diff --git a/firebaseai/FunctionCallingSample/Screens/FunctionCallingScreen.swift b/firebaseai/FunctionCallingExample/Screens/FunctionCallingScreen.swift similarity index 100% rename from firebaseai/FunctionCallingSample/Screens/FunctionCallingScreen.swift rename to firebaseai/FunctionCallingExample/Screens/FunctionCallingScreen.swift diff --git a/firebaseai/FunctionCallingSample/ViewModels/FunctionCallingViewModel.swift b/firebaseai/FunctionCallingExample/ViewModels/FunctionCallingViewModel.swift similarity index 100% rename from firebaseai/FunctionCallingSample/ViewModels/FunctionCallingViewModel.swift rename to firebaseai/FunctionCallingExample/ViewModels/FunctionCallingViewModel.swift diff --git a/firebaseai/GenerativeAIMultimodalSample/Assets.xcassets/AccentColor.colorset/Contents.json b/firebaseai/GenerativeAIMultimodalExample/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from firebaseai/GenerativeAIMultimodalSample/Assets.xcassets/AccentColor.colorset/Contents.json rename to firebaseai/GenerativeAIMultimodalExample/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/firebaseai/GenerativeAIMultimodalSample/Assets.xcassets/AppIcon.appiconset/Contents.json b/firebaseai/GenerativeAIMultimodalExample/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from firebaseai/GenerativeAIMultimodalSample/Assets.xcassets/AppIcon.appiconset/Contents.json rename to firebaseai/GenerativeAIMultimodalExample/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/firebaseai/GenerativeAIMultimodalSample/Assets.xcassets/Contents.json b/firebaseai/GenerativeAIMultimodalExample/Assets.xcassets/Contents.json similarity index 100% rename from firebaseai/GenerativeAIMultimodalSample/Assets.xcassets/Contents.json rename to firebaseai/GenerativeAIMultimodalExample/Assets.xcassets/Contents.json diff --git a/firebaseai/GenerativeAIMultimodalSample/Preview Content/Preview Assets.xcassets/Contents.json b/firebaseai/GenerativeAIMultimodalExample/Preview Content/Preview Assets.xcassets/Contents.json similarity index 100% rename from firebaseai/GenerativeAIMultimodalSample/Preview Content/Preview Assets.xcassets/Contents.json rename to firebaseai/GenerativeAIMultimodalExample/Preview Content/Preview Assets.xcassets/Contents.json diff --git a/firebaseai/GenerativeAIMultimodalSample/Screens/PhotoReasoningScreen.swift b/firebaseai/GenerativeAIMultimodalExample/Screens/PhotoReasoningScreen.swift similarity index 100% rename from firebaseai/GenerativeAIMultimodalSample/Screens/PhotoReasoningScreen.swift rename to firebaseai/GenerativeAIMultimodalExample/Screens/PhotoReasoningScreen.swift diff --git a/firebaseai/GenerativeAIMultimodalSample/ViewModels/PhotoReasoningViewModel.swift b/firebaseai/GenerativeAIMultimodalExample/ViewModels/PhotoReasoningViewModel.swift similarity index 100% rename from firebaseai/GenerativeAIMultimodalSample/ViewModels/PhotoReasoningViewModel.swift rename to firebaseai/GenerativeAIMultimodalExample/ViewModels/PhotoReasoningViewModel.swift diff --git a/firebaseai/GenerativeAITextSample/Assets.xcassets/AccentColor.colorset/Contents.json b/firebaseai/GenerativeAITextExample/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from firebaseai/GenerativeAITextSample/Assets.xcassets/AccentColor.colorset/Contents.json rename to firebaseai/GenerativeAITextExample/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/firebaseai/GenerativeAITextSample/Assets.xcassets/AppIcon.appiconset/Contents.json b/firebaseai/GenerativeAITextExample/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from firebaseai/GenerativeAITextSample/Assets.xcassets/AppIcon.appiconset/Contents.json rename to firebaseai/GenerativeAITextExample/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/firebaseai/GenerativeAITextSample/Assets.xcassets/Contents.json b/firebaseai/GenerativeAITextExample/Assets.xcassets/Contents.json similarity index 100% rename from firebaseai/GenerativeAITextSample/Assets.xcassets/Contents.json rename to firebaseai/GenerativeAITextExample/Assets.xcassets/Contents.json diff --git a/firebaseai/GenerativeAITextSample/Preview Content/Preview Assets.xcassets/Contents.json b/firebaseai/GenerativeAITextExample/Preview Content/Preview Assets.xcassets/Contents.json similarity index 100% rename from firebaseai/GenerativeAITextSample/Preview Content/Preview Assets.xcassets/Contents.json rename to firebaseai/GenerativeAITextExample/Preview Content/Preview Assets.xcassets/Contents.json diff --git a/firebaseai/GenerativeAITextSample/Screens/GenerateContentScreen.swift b/firebaseai/GenerativeAITextExample/Screens/GenerateContentScreen.swift similarity index 100% rename from firebaseai/GenerativeAITextSample/Screens/GenerateContentScreen.swift rename to firebaseai/GenerativeAITextExample/Screens/GenerateContentScreen.swift diff --git a/firebaseai/GenerativeAITextSample/ViewModels/GenerateContentViewModel.swift b/firebaseai/GenerativeAITextExample/ViewModels/GenerateContentViewModel.swift similarity index 100% rename from firebaseai/GenerativeAITextSample/ViewModels/GenerateContentViewModel.swift rename to firebaseai/GenerativeAITextExample/ViewModels/GenerateContentViewModel.swift From 68451ccff4ee91b6746950097b5fea639e5c422c Mon Sep 17 00:00:00 2001 From: YoungHypo Date: Sun, 22 Jun 2025 15:16:48 -0700 Subject: [PATCH 3/4] change name from Sample to Example in acutal code --- firebaseai/ChatExample/Screens/ConversationScreen.swift | 2 +- firebaseai/ChatExample/Views/ErrorView.swift | 2 +- firebaseai/ChatExample/Views/MessageView.swift | 2 +- firebaseai/FirebaseAIExample/ContentView.swift | 4 ++-- firebaseai/FirebaseAIExample/FirebaseAIExampleApp.swift | 4 ++-- .../Screens/PhotoReasoningScreen.swift | 2 +- .../Screens/GenerateContentScreen.swift | 2 +- firebaseai/ImagenScreen/ImagenScreen.swift | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/firebaseai/ChatExample/Screens/ConversationScreen.swift b/firebaseai/ChatExample/Screens/ConversationScreen.swift index 0b845efd1..48836b000 100644 --- a/firebaseai/ChatExample/Screens/ConversationScreen.swift +++ b/firebaseai/ChatExample/Screens/ConversationScreen.swift @@ -85,7 +85,7 @@ struct ConversationScreen: View { } } } - .navigationTitle("Chat sample") + .navigationTitle("Chat example") .onAppear { focusedField = .message } diff --git a/firebaseai/ChatExample/Views/ErrorView.swift b/firebaseai/ChatExample/Views/ErrorView.swift index 09ed3f870..55ea40369 100644 --- a/firebaseai/ChatExample/Views/ErrorView.swift +++ b/firebaseai/ChatExample/Views/ErrorView.swift @@ -91,6 +91,6 @@ struct ErrorView: View { ErrorView(error: errorPromptBlocked) } .listStyle(.plain) - .navigationTitle("Chat sample") + .navigationTitle("Chat example") } } diff --git a/firebaseai/ChatExample/Views/MessageView.swift b/firebaseai/ChatExample/Views/MessageView.swift index 79894503f..714445907 100644 --- a/firebaseai/ChatExample/Views/MessageView.swift +++ b/firebaseai/ChatExample/Views/MessageView.swift @@ -102,7 +102,7 @@ struct MessageView_Previews: PreviewProvider { MessageView(message: ChatMessage(message: "Hello!", participant: .system, pending: true)) } .listStyle(.plain) - .navigationTitle("Chat sample") + .navigationTitle("Chat example") } } } diff --git a/firebaseai/FirebaseAIExample/ContentView.swift b/firebaseai/FirebaseAIExample/ContentView.swift index 3f2b15a4c..3d6e8e32f 100644 --- a/firebaseai/FirebaseAIExample/ContentView.swift +++ b/firebaseai/FirebaseAIExample/ContentView.swift @@ -45,7 +45,7 @@ struct ContentView: View { } } - Section("Samples") { + Section("Examples") { NavigationLink { GenerateContentScreen(firebaseService: firebaseService) } label: { @@ -73,7 +73,7 @@ struct ContentView: View { } } } - .navigationTitle("Generative AI Samples") + .navigationTitle("Generative AI Examples") .onChange(of: selectedBackend) { newBackend in firebaseService = newBackend.backendValue // Note: This might cause views that hold the old service instance to misbehave diff --git a/firebaseai/FirebaseAIExample/FirebaseAIExampleApp.swift b/firebaseai/FirebaseAIExample/FirebaseAIExampleApp.swift index 61c6bfed7..1d59440ea 100644 --- a/firebaseai/FirebaseAIExample/FirebaseAIExampleApp.swift +++ b/firebaseai/FirebaseAIExample/FirebaseAIExampleApp.swift @@ -28,7 +28,7 @@ class AppDelegate: NSObject, UIApplicationDelegate { guard let bundleID = Bundle.main.bundleIdentifier else { fatalError() } fatalError(""" You must create and/or download a valid `GoogleService-Info.plist` file for \(bundleID) from \ - https://console.firebase.google.com to run this sample. Replace the existing \ + https://console.firebase.google.com to run this example. Replace the existing \ `GoogleService-Info.plist` file in the `firebaseai` directory with this new file. """) } @@ -38,7 +38,7 @@ class AppDelegate: NSObject, UIApplicationDelegate { } @main -struct FirebaseAISampleApp: App { +struct FirebaseAIExampleApp: App { @UIApplicationDelegateAdaptor var appDelegate: AppDelegate var body: some Scene { diff --git a/firebaseai/GenerativeAIMultimodalExample/Screens/PhotoReasoningScreen.swift b/firebaseai/GenerativeAIMultimodalExample/Screens/PhotoReasoningScreen.swift index e3796f387..5ccf0583a 100644 --- a/firebaseai/GenerativeAIMultimodalExample/Screens/PhotoReasoningScreen.swift +++ b/firebaseai/GenerativeAIMultimodalExample/Screens/PhotoReasoningScreen.swift @@ -62,7 +62,7 @@ struct PhotoReasoningScreen: View { .listStyle(.plain) } } - .navigationTitle("Multimodal sample") + .navigationTitle("Multimodal example") .onAppear { focusedField = .message } diff --git a/firebaseai/GenerativeAITextExample/Screens/GenerateContentScreen.swift b/firebaseai/GenerativeAITextExample/Screens/GenerateContentScreen.swift index 9bab06fb5..b0736896e 100644 --- a/firebaseai/GenerativeAITextExample/Screens/GenerateContentScreen.swift +++ b/firebaseai/GenerativeAITextExample/Screens/GenerateContentScreen.swift @@ -69,7 +69,7 @@ struct GenerateContentScreen: View { } .listStyle(.plain) } - .navigationTitle("Text sample") + .navigationTitle("Text example") } private func onGenerateContentTapped() { diff --git a/firebaseai/ImagenScreen/ImagenScreen.swift b/firebaseai/ImagenScreen/ImagenScreen.swift index e961fef56..00a4d96cf 100644 --- a/firebaseai/ImagenScreen/ImagenScreen.swift +++ b/firebaseai/ImagenScreen/ImagenScreen.swift @@ -67,7 +67,7 @@ struct ImagenScreen: View { ProgressOverlay() } } - .navigationTitle("Imagen sample") + .navigationTitle("Imagen example") .onAppear { focusedField = .message } From fd6c36a2539bf44a8f80e1eaee0c93afc3c05d42 Mon Sep 17 00:00:00 2001 From: Haibo Yang Date: Mon, 23 Jun 2025 09:49:40 -0700 Subject: [PATCH 4/4] Update README.md --- firebaseai/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/firebaseai/README.md b/firebaseai/README.md index 75821d129..fe0088e3e 100644 --- a/firebaseai/README.md +++ b/firebaseai/README.md @@ -30,7 +30,6 @@ sample app to your Firebase project (or create a new project): - The default bundle ID is `com.google.firebase.quickstart.FirebaseAIExample` 3. Download the `GoogleService-Info.plist` for the app when prompted and save it to the `firebaseai` directory. -4. In the Firebase Console, click **AI** and select **AI Logic** to enable the Gemini Developer API and Vertex AI Gemini API. You should now be able to build and run the sample!