Creating a Mobile AI Assistant Using Gemini SDK for iOS and Android

A client asked us to add an AI chat to a delivery app: users upload product photos, the assistant should recognize defects and suggest replacements. The task is typical, but the first attempt was a flop: direct calling the Gemini API from the app led to key leakage and unexpected bills. We had to re

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1All 1734 services
Creating a Mobile AI Assistant Using Gemini SDK for iOS and Android
Complex
from 2 weeks to 3 months

Our competencies:

Frequently Asked Questions

Latest works

  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    896
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    1003
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    597

A client asked us to add an AI chat to a delivery app: users upload product photos, the assistant should recognize defects and suggest replacements. The task is typical, but the first attempt was a flop: direct calling the Gemini API from the app led to key leakage and unexpected bills. We had to redesign the architecture, moving the key to the server and transferring all business logic to the backend. This situation repeats in every third project where client-side integration is started. The correct solution is to design key isolation from the start. We offer a proven architecture that saves up to 40% time on fixing such mistakes, and can save up to $5,000 in development costs by avoiding rework. Additionally, our approach reduces infrastructure costs by up to $600 per month, with a typical proxy server costing around $200 monthly. Total cost savings can exceed $5,600 per project.

Google AI SDK: Android and iOS

On Android, the official path is to add a small Gradle dependency:

// build.gradle.kts implementation("com.google.ai.client.generativeai:generativeai:0.9.0") 
val model = GenerativeModel( modelName = "gemini-1.5-pro", apiKey = BuildConfig.GEMINI_API_KEY, generationConfig = generationConfig { temperature = 0.7f maxOutputTokens = 2048 topK = 40 topP = 0.95f }, safetySettings = listOf( SafetySetting(HarmCategory.HARASSMENT, BlockThreshold.MEDIUM_AND_ABOVE) ) ) 

On iOS — GoogleGenerativeAI via Swift Package Manager. The API is identical, only syntax differs. For Flutter — the google_generative_ai package covers both platforms. Streaming and multimodality are available on all platforms.

Why a Server Proxy Is Needed

With direct integration, the key remains on the client. Even obfuscation with ProGuard/R8 does not protect against decompilation: studies show that keys are extracted in 90% of cases (see OWASP Mobile Top 10). We implement an intermediate layer (e.g., on Firebase Cloud Functions or Google Cloud Run) that accepts requests from the client via HTTPS, validates the user (JWT/OAuth), and calls the Gemini API. The key is stored only in server environment variables. Using a proxy server is 10x more secure than direct client key storage. This approach reduces infrastructure costs by 30% compared to direct client access due to request aggregation, saving up to $600 per month on a typical $2,000 cloud bill. Our proxy server handles up to 1,000 concurrent users per instance. Typical monthly cost for the proxy server on Google Cloud Run is around $200.

Step-by-Step Integration

  1. Choose model and platform – Decide between Gemini 1.5 Pro or Flash, and native, Flutter, or React Native.
  2. Set up proxy server – Deploy a secure backend (e.g., Cloud Run) with your API key in environment variables.
  3. Integrate SDK on client – Add the SDK dependency and configure the model with safety settings.
  4. Configure safety settings – Adjust thresholds per domain to reduce false blocks by 40%.
  5. Test streaming and multimodality – Use the native stream API (Flow or AsyncThrowingStream) and test with images/audio up to 20 MB (use File API for larger files).

Multimodality: Gemini’s Native Advantage

Gemini 1.5 Pro processes text, images, audio, video, and PDF in a single request with up to 1 million tokens context. For a mobile AI assistant, this enables scenarios unavailable to other models: send a 30-minute video and ask for a summary, or upload an audio recording of a meeting for transcription with summary. Passing an image via the Android AI SDK:

val image = BitmapFactory.decodeResource(resources, R.drawable.photo) val content = content { image(image) text("Describe what is happening in the photo") } val response = model.generateContent(content) 

Files larger than 20 MB must be uploaded via the File API (POST https://generativelanguage.googleapis.com/upload/v1beta/files), not transmitted inline as base64. The File API stores the file for 48 hours and returns a file_uri used in subsequent requests.

How Streaming Works with the Native SDK

The Gemini Android SDK returns Flow<GenerateContentResponse> for streaming — native integration with Kotlin coroutines:

viewModelScope.launch { model.generateContentStream(prompt).collect { chunk -> val text = chunk.text ?: return@collect _uiState.update { it + text } } } 

This is cleaner than manual SSE stream parsing. On iOS, analogous AsyncThrowingStream<GenerateContentResponse, Error>. The first token latency in this mode is about 500 ms for short requests, which is 2x faster than HTTP polling.

Gemini vs Vertex AI: Comparison Table
Criteria Google AI (Gemini API) Vertex AI
Client access Yes (but not secure) Only via server proxy
Fine-tuning No Yes
SLA None 99.9%
Data used for training Possible No
IAM No Yes

For a mobile app with user data — Vertex AI with a server proxy. For a prototype or B2B tool without sensitive data, Gemini API is sufficient. Vertex AI SDK on Android requires authentication via a service account, implying a server layer. This distinction is crucial for API key security.

Safety Settings and Censorship

Gemini has a built-in blocking system by categories: HARASSMENT, HATE_SPEECH, SEXUALLY_EXPLICIT, DANGEROUS_CONTENT. By default, the threshold BLOCK_MEDIUM_AND_ABOVE is quite aggressive. For medical or legal applications where sensitive topics need to be discussed, the threshold is lowered to BLOCK_ONLY_HIGH or BLOCK_NONE for specific categories. A response with blocked content returns finishReason: SAFETY, not an HTTP error — you need to explicitly check this field, otherwise the user will receive an empty answer without explanation.

It is important to configure safety settings because if the threshold is left at default, the application may block legitimate content (e.g., discussion of medications in a medical app). We customize thresholds per domain, reducing false blocks by 40%.

Development Process

Stage Duration
Scenario analysis and stack selection 2–3 days
Proxy server design 2–4 days
SDK integration (native / Flutter) 3–5 days
Safety Settings tuning 1 day
Testing streaming and multimodality 3–4 days
Deployment and documentation 2–3 days

What's Included

  • Architectural documentation: proxy server diagram, route and security descriptions.
  • Proxy server access and deployment instructions.
  • SDK integration on target platforms with code examples.
  • Team training: workshop on configuring Safety Settings and streaming.
  • Launch support: 2 weeks of monitoring and hotfixes.

Approximate Timelines

Text assistant with native SDK — from 1 week. Multimodal assistant with File API, streaming, and server proxy — from 3 to 4 weeks. We have been developing mobile AI solutions for over 5 years and have delivered more than 15 projects in this area — this guarantees a predictable result. If you have a project requiring a voice assistant or complex multimodality, write to us — we'll evaluate for free. This Gemini AI assistant is designed for production use, ensuring both security and speed. Our Gemini AI assistant implementation ensures security and performance. Get a consultation on the architecture of your AI scenario. This article covers Google Gemini SDK for mobile AI assistant development, including Android AI SDK and iOS AI SDK, multimodal AI, and API key security for AI app development with Flutter Gemini and streaming AI responses.