Rakenna · Mobiili-try-on

Lisää virtuaalinen try-on iOS- tai Android-sovellukseen

Yhdellä lauseella

Pidä Photta API-avain taustajärjestelmässäsi; tarjoa proxy-endpoint (/mobile/try-on), joka vastaanottaa tuotekuvan ja mannequin_id:n, välittää ne osoitteeseen /api/v1/tryon/apparel, tallentaa luontitunnisteen (generation ID) käyttäjälle ja tarjoaa status-endpointin, jota mobiilisovellus pollaa 3 sekunnin välein, kunnes kuva on valmis. Puhelin ei koskaan saa tietää Photta-avaimen olemassaolosta.

  • Credits: 5 credits resoluutiolla 2K · 6 credits resoluutiolla 4K
  • Tyypillinen kesto: 1.5–4 min
  • Käsittely: asynkroninen, polling

Jokainen luku tällä sivulla on peräisin Photta-rajapinnan dokumentaatiosta · tarkistettu

Laitteesi ei koskaan kommunikoi suoraan Phottaan — se puhuu taustajärjestelmällesi, ja taustajärjestelmäsi puhuu Phottalle. Tämä rajaus pitää API-avaimesi poissa käyttäjän puhelimesta, rate limitit omana huolenasi ja sovelluksesi hyväksyttävissä kaikissa sovelluskaupoissa.

RESPONSE=$(curl -s -X POST https://api.photta.app/api/v1/tryon/apparel \
  -H "Authorization: Bearer $PHOTTA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "product_type": "top",
  "product_images": [
    "https://cdn.yourstore.com/products/shirt-front.jpg"
  ],
  "product_back_image": "https://cdn.yourstore.com/products/shirt-back.jpg",
  "product_category": "t_shirt",
  "mannequin_id": "mnk_f3a9b1",
  "pose_id": "pose_c2d4e5",
  "background": "https://cdn.yourstore.com/backgrounds/studio-loft.jpg",
  "lock_background": true,
  "resolution": "2K",
  "aspect_ratio": "3:4",
  "body_size": "M",
  "expression": "neutral",
  "user_instruction": "Keep the collar pattern crisp and centered."
}')
ID=$(echo "$RESPONSE" | jq -r '.data.id')

Miten se toimii

Laite, taustajärjestelmä, Photta — kolme tasoa, yksi työnkulku

Viisi konkreettista päätöstä, jotka sinun on tehtävä ennen ensimmäistä App Store -julkaisua.

  1. Vaihe 1

    Pidä avain palvelimellasi

    Älä toimita Photta-avainta sovellusbinäärissä, info.plist-tiedostossa, AndroidManifestissa tai missään käännösaikaisessa env-tiedostossa — binäärin purkaminen on triviaalia ja avain vuotaa. Taustajärjestelmäsi on ainoa paikka, jossa avain saa olla.

  2. Vaihe 2

    Suunnittele siisti proxy-endpoint

    Tarjoa /mobile/try-on sovelluksellesi. Autentikoi pyyntö omalla käyttäjäistunnollasi — älä välitä raakoja API-avaimia proxyn läpi. Proxy kutsuu sitten Phottaa autentikoidun käyttäjän puolesta.

  3. Vaihe 3

    Peilaa Phottan työn tila tietokannassasi

    Kun Photta palauttaa luontitunnisteen (generation ID), lisää tietokantasi jobs-tauluun rivi, jonka avaimena on user_id. Mobiilisovelluksesi pollaa SINUN endpointtiasi /mobile/try-on/:id — ei Phottan — joten rate limitit skaalautuvat SINUN tilauksesi, eivät jokaisen käyttäjän laitteen mukaan.

  4. Vaihe 4

    Välimuistita tuloksen URL

    Kun Photta raportoi completed, kopioi output_url jobs-rivillesi ja valinnaisesti lataa tavut omaan CDN-verkkoosi. Mobiilikäyttäjät maksavat megatavuittain — älä hotlinkkaa Phottan CDN:ää PDP-näyttökerran koko elinkaaren ajaksi.

  5. Vaihe 5

    Käsittele offline-tilat hallitusti

    Mobiiliverkot katkeavat kesken pollingin. Näytä 'yritetään uudelleen' -tila kovan virheen sijaan, yritä uudelleen eksponentiaalisella perääntymisellä ja säilytä työtunniste paikallisesti, jotta kylmäkäynnistys jatkaa siitä, mihin edellinen istunto jäi.

Integraation kolme kerrosta

Sovelluskontrahti, taustajärjestelmän proxy, asiakaspään polling — juuri se rajaus, jonka tarvitset.

// Never ship your PHOTTA_API_KEY to the device. The mobile app
// calls YOUR API; your API calls Photta. Simple, safe, billable.
POST /mobile/try-on
{
  "productImageUrl": "...",
  "mannequinId": "...",
  "poseId": "..."
}
// → returns { jobId } immediately
const res = await fetch("https://api.photta.app/api/v1/tryon/apparel", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.PHOTTA_API_KEY}`, "Content-Type": "application/json" },
  body: JSON.stringify({
    "product_type": "top",
    "product_images": [
      "https://cdn.yourstore.com/products/shirt-front.jpg"
    ],
    "product_back_image": "https://cdn.yourstore.com/products/shirt-back.jpg",
    "product_category": "t_shirt",
    "mannequin_id": "mnk_f3a9b1",
    "pose_id": "pose_c2d4e5",
    "background": "https://cdn.yourstore.com/backgrounds/studio-loft.jpg",
    "lock_background": true,
    "resolution": "2K",
    "aspect_ratio": "3:4",
    "body_size": "M",
    "expression": "neutral",
    "user_instruction": "Keep the collar pattern crisp and centered."
  }),
});
const { data } = await res.json(); // data.id, data.status
// Store { id: data.id, user_id, status: "processing" } in your jobs table
// and return { jobId: data.id } to the device.
// App polls YOUR /mobile/try-on/:id — you poll Photta server-side
// and mirror status. This way rate limits are YOUR problem, not
// each device's, and you can add caching + analytics in one place.
async function pollJob(jobId: string) {
  while (true) {
    const { status, imageUrl } = await api.get(`/mobile/try-on/${jobId}`);
    if (status === "completed") return imageUrl;
    if (status === "failed") throw new Error("Try-on failed");
    await sleep(3000);
  }
}

Kehittäjien usein kysymää

Phottaa hyödyntävän mobiiliominaisuuden julkaiseminen

Voinko kutsua Photta APIa suoraan laitteelta?

Teknisesti kyllä — mutta sinun pitäisi sisällyttää API-avaimesi sovelluspakettiin, mikä toimittaa avaimesi jokaiseen laitteeseen, joka asentaa sovelluksen. Reititä oman taustajärjestelmäsi kautta, jotta avain pysyy hallitsemallasi palvelimella.

Miten käsittelen hitaat mobiiliverkot?

Kaksi asiaa. Yksi: lähetä työ taustajärjestelmästä, älä laitteesta — lataat vain tuotekuvan puhelimesta omaan APIisi. Kaksi: pollaa omaa status-endpointtiasi 3 sekunnin välein ja käytä virhetilanteissa eksponentiaalista perääntymistä. Jos käyttäjä vaihtaa välilehteä tai menettää verkkoyhteyden, tallenna työtunniste paikalliseen muistiin, jotta käsittely voi jatkua hänen palatessaan.

Tukeeko Photta webhookeja?

Ei. Polling on ainoa valmistumissignaali, jonka API tarjoaa, joten pidä worker-silmukka käynnissä — ja lähetä palvelimen lähettämä tapahtuma (server-sent event) puhelimeen heti, kun oma taustajärjestelmäsi havaitsee työn valmistuneen.

Voinko käyttää Phottaa React Nativen tai Flutterin kanssa?

Kyllä — JavaScript- tai Dart-puolelta kutsut vain omaa tausta-APIasi. Mikään Phottan sisäisistä yksityiskohdista ei vuoda läpi. Flutter-sovellukset tekevät fetch-pyynnön osoitteeseen /mobile/try-on samalla tavalla kuin React Native- tai natiivi SwiftUI- / Jetpack Compose -sovellus.

Välittääkö Applen tarkistustiimi tästä integraatiosta?

Ei — koska sovelluksesi ei kutsu Phottaa. Se kutsuu omaa taustajärjestelmääsi omalla autentikaatiollasi. Applen näkökulmasta olet tavallinen REST-taustajärjestelmää käyttävä sovellus. Sama koskee Google Playta ja Huawei AppGallerya.

Julkaise virtuaalinen try-on seuraavassa sovellusversiossasi

Kolme ohutta kerrosta, nolla SDK-jalanjälkeä laitteessa. Ota API-avain ja kytke proxy toimintaan yhdessä iltapäivässä.