Geliştirme · Mobil Try-On

Bir iOS veya Android uygulamasına sanal try-on ekleyin

Tek cümlede

Photta API anahtarını backend'inizde tutun; ürün görselini ve manken kimliğini kabul eden, /api/v1/tryon/apparel adresine ileten, üretim kimliğini kullanıcıyla eşleştirerek saklayan ve mobil uygulamanın görsel hazır olana kadar her 3 saniyede bir polling yaptığı bir durum endpoint'i sunan bir proxy endpoint (/mobile/try-on) açın. Telefon, Photta anahtarının varlığından asla haberdar olmaz.

  • Credits: 2K'da 5 credits · 4K'da 6 credits
  • Tipik süre: 1.5–4 min
  • İşleme: asenkron, polling

Bu sayfadaki her veri şuradan alınmıştır: Photta API dokümantasyonu · kontrol edildi

Cihazınız asla doğrudan Photta ile konuşmaz — backend'inizle konuşur ve backend'iniz Photta ile konuşur. API anahtarınızı kullanıcının telefonundan uzak tutan, rate limit'lerinizi kendi kontrolünüzde bırakan ve uygulamanızın tüm mağazalarda onaylanabilir olmasını sağlayan tam olarak bu sınırdır.

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')

Nasıl çalışır

Cihaz, backend, Photta — üç katman, tek akış

İlk App Store gönderiminden önce vermeniz gereken beş somut karar.

  1. Adım 1

    Anahtarı sunucunuzda tutun

    Photta anahtarını uygulama ikiliniz, info.plist, AndroidManifest veya derleme zamanı ortam dosyaları içine eklemeyin — ikiliyi kaynak koda dönüştürmek son derece kolaydır ve anahtar sızdırılacaktır. Backend'iniz, anahtarın barındığı tek yerdir.

  2. Adım 2

    Temiz bir proxy endpoint tasarlayın

    Uygulamanıza /mobile/try-on endpoint'ini açın. İsteği kendi kullanıcı oturumunuzla doğrulayın — proxy üzerinden ham API anahtarları iletmeyin. Ardından proxy, kimliği doğrulanmış kullanıcı adına Photta'yı çağırır.

  3. Adım 3

    Photta'nın iş durumunu veritabanınıza yansıtın

    Photta bir üretim kimliği döndürdüğünde, kendi jobs tablonuza user_id anahtarlı bir satır ekleyin. Mobil uygulamanız Photta'nınkini değil, KENDİ /mobile/try-on/:id endpoint'inizi poll eder; böylece rate limit'ler her kullanıcının cihazına göre değil, SİZİN planınıza göre ölçeklenir.

  4. Adım 4

    Sonuç URL'sini önbelleğe alın

    Photta completed bildirdiğinde, output_url değerini jobs satırınıza kopyalayın ve isteğe bağlı olarak baytları kendi CDN'inize indirin. Mobil kullanıcılar MB başına ödeme yapar — bir PDP gösteriminin tüm ömrü boyunca Photta CDN'ine doğrudan hot-link vermeyin.

  5. Adım 5

    Çevrimdışı durumları sorunsuzca yönetin

    Mobil ağlar polling sırasında kopabilir. Kesin bir hata yerine 'yeniden deneniyor' durumu gösterin, üstel geri çekilme (exponential backoff) ile yeniden deneyin ve iş kimliğini yerel olarak saklayın, böylece uygulama sıfırdan başladığında son oturumun kaldığı yerden devam edebilir.

Entegrasyonun üç katmanı

Uygulama sözleşmesi, backend proxy, istemci tarafı polling — tam olarak ihtiyacınız olan sınır.

// 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);
  }
}

Geliştiricilerin sıkça sorduğu sorular

Photta destekli bir mobil özelliği yayına alma

Photta API'sini doğrudan cihazdan çağırabilir miyim?

Teknik olarak evet — ancak API anahtarınızı uygulama paketinin içine koymanız gerekir, bu da anahtarınızı uygulamayı yükleyen her cihaza göndermek anlamına gelir. Anahtarın kontrol ettiğiniz bir sunucuda kalması için yönlendirmeyi kendi backend'iniz üzerinden yapın.

Yavaş mobil ağları nasıl yönetirim?

İki adımla. Bir: işi cihazdan değil, backend'den gönderin — telefondan yalnızca kendi API'nize bir ürün görseli yüklüyorsunuz. İki: kendi durum endpoint'inizi 3 saniyelik aralıklarla ve başarısızlık durumunda üstel geri çekilme ile poll edin. Kullanıcı sekmeyi değiştirirse veya sinyali kaybederse, iş kimliğini yerel depolamada saklayın, böylece geri döndüğünde devam edebilir.

Photta webhook'ları destekliyor mu?

Hayır. Polling, API'nin sunduğu tek tamamlanma sinyalidir; bu nedenle worker döngüsünü koruyun ve kendi backend'iniz işin bittiğini gördüğü anda telefona bir server-sent event gönderin.

Photta'yı React Native veya Flutter ile kullanabilir miyim?

Evet — JavaScript / Dart tarafından bakıldığında yalnızca kendi backend API'nizi çağırırsınız. Photta'ya özgü hiçbir detay dışarı sızmaz. Flutter uygulamaları, bir React Native veya yerel SwiftUI / Jetpack Compose uygulamasının yaptığı gibi /mobile/try-on endpoint'inden fetch işlemi yapar.

Apple'ın inceleme ekibi bu entegrasyonu önemser mi?

Hayır — çünkü uygulamanız Photta'yı çağırmaz. Kendi kimlik doğrulamanızla kendi backend'inizi çağırır. Apple'ın bakış açısından siz normal bir REST tabanlı uygulamasınız. Aynı durum Google Play ve Huawei AppGallery için de geçerlidir.

Bir sonraki uygulama sürümünüzde sanal try-on özelliğini yayına alın

Üç ince katman, cihazda sıfır SDK ayak izi. Bir API anahtarı alın ve proxy bağlantısını bir öğleden sonrada kurun.