NFT Minting in Mobile Apps: Full Cycle Development

We integrate NFT minting directly into mobile apps for iOS and Android. This involves uploading media to <cite>[IPFS](https://en.wikipedia.org/wiki/InterPlanetary_File_System)</cite>, generating correct ERC-721 metadata, and calling a smart contract — all while handling connectivity drops and memory

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
NFT Minting in Mobile Apps: Full Cycle Development
Complex
~5 days

Our competencies:

Frequently Asked Questions

Latest works

  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    897
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    784
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1218
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    1081
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    600

We integrate NFT minting directly into mobile apps for iOS and Android. This involves uploading media to IPFS, generating correct ERC-721 metadata, and calling a smart contract — all while handling connectivity drops and memory constraints on the phone. We have delivered over 15 projects with NFT integration, including connections to major marketplaces, and have accumulated practical solutions to these problems.

Our experience spans Ethereum, Polygon, and Solana networks, working with IPFS via Pinata and NFT.Storage, as well as setting up push notifications for transaction statuses. Lazy minting lets you postpone gas payment until the moment of sale, saving up to 90% of costs compared to regular minting — that's 10 times more profitable for the creator. In this article we will break down the technical details of each stage so you can avoid typical mistakes and make minting convenient for the user.

How to Mint NFT from a Mobile Device?

Minting in a mobile app goes through three stages: selecting and uploading the media file, generating ERC-721 metadata, and sending the transaction to the blockchain. Each stage has its own pitfalls.

Uploading Media to IPFS

For storing media we use the decentralized storage IPFS. On iOS we use PHPickerViewController (available since iOS 14), on Android — PhotoPicker (Android 13) with a fallback to GetContent. The file is sent to the Pinata or NFT.Storage API. Here's an example upload in Swift:

Example upload on iOS Swift
// iOS — upload file to Pinata IPFS func pinFileToIPFS(fileURL: URL, fileName: String) async throws -> String { var request = URLRequest(url: URL(string: "https://api.pinata.cloud/pinning/pinFileToIPFS")!) request.httpMethod = "POST" request.setValue("Bearer \(pinataJWT)", forHTTPHeaderField: "Authorization") let boundary = UUID().uuidString request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type") var body = Data() body.append("--\(boundary)\r\nContent-Disposition: form-data; name=\"file\"; filename=\"\(fileName)\"\r\n") body.append("Content-Type: image/jpeg\r\n\r\n") body.append(try Data(contentsOf: fileURL)) body.append("\r\n--\(boundary)--\r\n") request.httpBody = body let (data, _) = try await URLSession.shared.data(for: request) let response = try JSONDecoder().decode(PinataResponse.self, from: data) return "ipfs://\(response.ipfsHash)" } 

For large files (video from 100 MB) we configure background upload via URLSession with background configuration on iOS and WorkManager with setExpedited on Android. We display progress as a bar and notifications. Average gas fee for minting on Ethereum 0.05 ETH ($100 at current rates), on Polygon — less than $0.01, which makes Polygon 10,000 times cheaper.

Generating ERC-721 Metadata

After uploading the media, you need to generate JSON metadata according to the OpenSea standard. Example in Kotlin:

// Android — forming NFT metadata JSON data class NftMetadata( val name: String, val description: String, val image: String, // ipfs://QmXxx... (CID of uploaded file) val externalUrl: String?, val attributes: List<NftAttribute> ) data class NftAttribute( val traitType: String, val value: String ) // Example result val metadata = NftMetadata( name = "My NFT #1", description = "Created via mobile app", image = "ipfs://QmImageHash...", attributes = listOf( NftAttribute("Background", "Blue"), NftAttribute("Rarity", "Rare") ) ) 

This JSON is uploaded to IPFS, and the resulting URI is passed to the mint function of the smart contract. We automate attribute generation — the user can add key-value pairs in the interface.

Minting UI Form

The form includes fields: name, description, media, attributes. Real-time NFT preview. The process is broken into three steps with indicators:

  1. Upload media to IPFS
  2. Upload metadata
  3. Minting transaction

Progress is shown at each step. Errors (e.g., insufficient gas) are handled with clear messages.

Why Lazy Minting is Beneficial for Creators?

High gas fees are the main barrier for creators. Lazy minting allows postponing writing the token to the blockchain until the first sale. Instead of an immediate transaction, the creator signs an EIP-712 voucher containing the price and metadata URI. The buyer activates minting at purchase and pays the gas. Lazy minting is 10 times more cost-effective than regular minting for creators.

Comparison of the two approaches:

Characteristic Regular Minting Lazy Minting
Gas payment Creator pays (upfront) Buyer pays at purchase
Risk for creator Gas may cost more than revenue Minimal — gas only at sale
Time to appear on blockchain Immediately Only after purchase
Integration complexity Basic Requires voucher generation and verification (EIP-712)

We recommend lazy minting for marketplaces and collections with low sales volume. Gas savings can reach 90%.

Our Work Process for Minting Integration

  1. Analysis — define NFT requirements: standard (ERC-721/1155), network (Ethereum, Polygon, Solana), gas payment methods.
  2. Design — develop architecture: choose IPFS provider, metadata schema, wallet integration (WalletConnect or embedded).
  3. Implementation — write minting module: media selection, IPFS upload, metadata generation, contract call. For lazy minting add signing and voucher verification.
  4. Testing — check on testnet (Goerli, Mumbai), simulate connection drops, test with different file sizes.
  5. Deployment — publish to App Store and Google Play, integrate with backend if needed.

Stages and timelines:

Stage Duration
Analysis 1 day
Design 1-2 days
Implementation 3-5 days
Testing 1-2 days
Deployment 1 day

What Is Included in the Deliverable

  • Source code of the minting module (iOS Swift, Android Kotlin)
  • Integration with IPFS (Pinata or NFT.Storage)
  • Documentation for smart contract and API
  • Push notification setup for transaction status
  • Administration guide (provider change, contract update)
  • 30-day support after delivery
  • Training session for your team (up to 2 hours)

Timeline

The project takes from 5 to 10 working days depending on complexity: basic minting — 5 days, with lazy minting — up to 8 days, with multi-network support — up to 10 days. Contact us for an accurate estimate of your case.

We guarantee compatibility with App Store and Google Play rules, as well as full documentation for independent further development. Order minting development — get a ready-made module in 5-10 days.