Реалізація створення (мінтингу) NFT через мобільний додаток

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Реалізація створення (мінтингу) NFT через мобільний додаток
Складний
~5 днів
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Впровадження створення (мінтингу) NFT через мобільний додаток

Мінтинг — це виклик функції mint смарт-контракту, яка записує новий токен у блокчейн та прикріплює до нього метадані. Потік мобільного мінтингу складніший, ніж десктопний: необхідно вибрати медіафайл, завантажити його в децентралізоване сховище, сформувати метадані у форматі ERC-721 JSON, потім викликати контракт. Все це має працювати з перериваннями з'єднання, повільним IPFS та обмеженими ресурсами мобільного пристрою.

Завантаження медіа в IPFS

Мінтинг починається з медіафайлу: зображення, відео чи аудіо. Користувачі вибирають зі своєї фотогалереї або знімають нове медіа.

На iOS — використовуйте PHPickerViewController (iOS 14+) для вибору з Photos. На Android — використовуйте ActivityResultContracts.PickVisualMedia (Photo Picker, Android 13+) з резервою на GetContent.

Завантажте медіафайл в IPFS через Pinata, NFT.Storage або Web3.Storage API:

// iOS — завантаження файлу в 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)"
}

Завантаження великих відеофайлів (100+ МБ) на мобільному має бути фоновою задачею з прогресс-барою. На iOS — використовуйте URLSession з конфігурацією background; на Android — WorkManager з setExpedited.

Формування метаданих ERC-721

Після завантаження медіа — композиція метаданих JSON відповідно до стандарту OpenSea:

// Android — формування JSON метаданих NFT
data class NftMetadata(
    val name: String,
    val description: String,
    val image: String,        // ipfs://QmXxx... (CID завантаженого файлу)
    val externalUrl: String?,
    val attributes: List<NftAttribute>
)

data class NftAttribute(
    val traitType: String,
    val value: String
)

// Приклад результату
val metadata = NftMetadata(
    name = "My NFT #1",
    description = "Created via mobile app",
    image = "ipfs://QmImageHash...",
    attributes = listOf(
        NftAttribute("Background", "Blue"),
        NftAttribute("Rarity", "Rare")
    )
)

Цей JSON також завантажується в IPFS — отримуємо ipfs://QmMetadataHash. Цей URI передається в mint(to, tokenId, metadataURI).

UI форма мінтингу

Мінімальні поля: Name, Description, медіафайл, атрибути (опціонально). Атрибути — це динамічно додавлені пари ключ-значення. Показуйте карточку NFT у реальному часі.

Розділіть прогрес завантаження на три кроки з індикатором:

  1. Завантаження медіа в IPFS (довгий крок)
  2. Завантаження метаданих в IPFS (швидко)
  3. Транзакція мінтингу

Lazy Minting

Якщо газ дорогий — запропонуйте lazy minting: токен не записується в блокчейн негайно. Метадані зберігаються off-chain, а транзакція відбувається при першому продажу (покупець платить газ мінтингу). OpenSea підтримує це через ваучери — EIP-712 підписані повідомлення, які мінтяться при покупці.

// iOS — підпис ваучера для lazy minting (EIP-712)
struct NFTVoucher {
    let tokenId: BigUInt
    let minPrice: BigUInt
    let uri: String
    let signature: Data  // EIP-712 підпис творця
}

Lazy minting усуває бар'єр «заплатіть газ перед продажем» — важливо для нових творців.

Часова шкала

5 робочих днів: вибір медіа, завантаження в IPFS (Pinata/NFT.Storage), формування ERC-721 метаданих, виклик mint, прогресс-бар через кроки, базова форма атрибутів. Lazy minting через EIP-712 ваучери — додатково 2–3 дні.