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.