Skip to content
ეს გვერდი შეიქმნა და ითარგმნა ხელოვნური ინტელექტის დახმარებით. თუ შეამჩნევთ უზუსტობას, გთხოვთ, დაგვეხმარეთ გაუმჯობესებაში. GitHub-ზე რედაქტირება

განაწილების მიმოხილვა

Fenfa ყველა პლატფორმისთვის ერთიანი განაწილების გამოცდილებას უზრუნველყოფს. ყოველ პროდუქტს საჯარო ჩამოტვირთვის გვერდი ეძლევა, რომელიც ვიზიტორის პლატფორმას ავტომატურად გამოავლენს და შესაბამის ჩამოტვირთვის ღილაკს ჩვენებს.

განაწილების მეკანიზმი

mermaid
sequenceDiagram
    participant User as End User
    participant Page as Product Page
    participant Fenfa as Fenfa Server
    participant Storage as File Storage

    User->>Page: Visit /products/:slug
    Page->>Page: Detect platform (iOS/Android/Desktop)
    Page->>User: Show platform-specific download button

    alt iOS
        User->>Fenfa: Tap Install
        Fenfa->>User: itms-services:// redirect
        User->>Fenfa: GET /ios/:id/manifest.plist
        Fenfa->>User: Return manifest XML
        User->>Storage: Download IPA
    else Android
        User->>Fenfa: Tap Download
        Fenfa->>Storage: GET /d/:releaseID
        Storage->>User: Download APK
    else Desktop
        User->>Fenfa: Click Download
        Fenfa->>Storage: GET /d/:releaseID
        Storage->>User: Download binary
    end

პროდუქტის ჩამოტვირთვის გვერდი

ყოველ გამოქვეყნებულ პროდუქტს საჯარო გვერდი აქვს /products/:slug-ზე. გვერდი მოიცავს:

  • აპლიკაციის ხატი და სახელი პროდუქტის კონფიგურაციიდან
  • პლატფორმის გამოვლენა -- გვერდი ბრაუზერის User-Agent-ს იყენებს პირველ რიგში სწორი ჩამოტვირთვის ღილაკის სჩვენებლად
  • QR კოდი -- ავტომატურად გენერირებული მობილური სკანირებისთვის
  • Release ისტორია -- არჩეული variant-ის ყველა release, უახლესი პირველი
  • Changelog-ები -- Release-ზე შენიშვნები inline ჩვენებით
  • მრავალი variant -- თუ პროდუქტს რამდენიმე პლატფორმის variant-ი აქვს, მომხმარებლებს შორის გადართვა შეუძლიათ

პლატფორმა-სპეციფიკური განაწილება

პლატფორმამეთოდიდეტალები
iOSOTA itms-services://-ის მეშვეობითManifest plist + პირდაპირი IPA ჩამოტვირთვა. HTTPS სჭირდება.
AndroidAPK-ის პირდაპირი ჩამოტვირთვაბრაუზერი APK-ს ჩამოტვირთავს. მომხმარებელი "Install from unknown sources"-ს ჩართავს.
macOSპირდაპირი ჩამოტვირთვაDMG, PKG ან ZIP ფაილები ბრაუზერის მეშვეობით.
Windowsპირდაპირი ჩამოტვირთვაEXE, MSI ან ZIP ფაილები ბრაუზერის მეშვეობით.
Linuxპირდაპირი ჩამოტვირთვაDEB, RPM, AppImage ან tar.gz ფაილები ბრაუზერის მეშვეობით.

პირდაპირი ჩამოტვირთვის ბმულები

ყოველ release-ს პირდაპირი ჩამოტვირთვის URL-ი აქვს:

https://your-domain.com/d/:releaseID

ეს URL:

  • ბინარულ ფაილს სწორი Content-Type და Content-Disposition header-ებით აბრუნებს
  • HTTP Range request-ებს განახლებადი ჩამოტვირთვებისთვის მხარს უჭერს
  • ჩამოტვირთვის counter-ს ზრდის
  • ნებისმიერ HTTP კლიენტთან (curl, wget, ბრაუზერები) მუშაობს

Event თვალყური

Fenfa სამი ტიპის event-ს ადევნებს თვალს:

Eventგამომწვევითვალყურისდევნებული მონაცემები
visitმომხმარებელი პროდუქტის გვერდს ხსნისIP, User-Agent, variant
clickმომხმარებელი ჩამოტვირთვის ღილაკს დააჭერსIP, User-Agent, release ID
downloadფაილი სინამდვილეში ჩამოიტვირთებაIP, User-Agent, release ID

Event-ები admin panel-ში ან CSV-ად ექსპორტით ნახვა შეიძლება:

bash
curl -o events.csv http://localhost:8000/admin/exports/events.csv \
  -H "X-Auth-Token: YOUR_ADMIN_TOKEN"

HTTPS მოთხოვნა

iOS-ს HTTPS სჭირდება

iOS OTA ინსტალაცია itms-services://-ის მეშვეობით სერვერს ვალიდური TLS სერთიფიკატით HTTPS-ის გამოყენებას მოითხოვს. ლოკალური ტესტირებისთვის შეგიძლიათ გამოიყენოთ ngrok ან mkcert. Production-ისთვის გამოიყენეთ Let's Encrypt-ით reverse proxy. იხ. Production განასახება.

პლატფორმის სახელმძღვანელოები

Released under the Apache-2.0 License.