AppForShareGet started

Docs

Move from Diawi

If a script or plugin uploads your builds to Diawi, it can upload to AppForShare after two changes: the URL and the token. The field names and status codes are the same. This guide shows the curl calls, how each Diawi field maps, and what to use for builds over 100 MB, stable links and iPhone checks.

  1. Step 1, Pro and Team for the API

    Make an account and a token

    Sign up and upload one build of each app from the web page to see the install page your testers get. Then make an API token under Dashboard, Settings, API tokens. It starts with afs_ and takes the place of your Diawi token.

  2. Step 2, Pro and Team

    Change the upload URL

    Send the same multipart form to AppForShare. The answer is a job id, as on Diawi. The token can go in the token field or as an Authorization: Bearer header.

    # Before
    curl https://upload.diawi.com/ -F token=$DIAWI_TOKEN -F [email protected] -F comment="Fixes the login crash"
    
    # After
    curl https://appforshare.io/api/ci/diawi -F token=$APPFORSHARE_TOKEN -F [email protected] -F comment="Fixes the login crash"
    # {"job":"Q3vF8kL2mN0pR7sT"}
  3. Step 3, Pro and Team

    Change the status call

    Poll the status with the token and the job id. 2001 means still processing, 2000 means done and 4000 means it failed, with the reason in message. When it is done, link is the install page, hash is the link code and qrcode is a PNG of the QR code.

    curl -s "https://appforshare.io/api/ci/diawi/status?token=$APPFORSHARE_TOKEN&job=Q3vF8kL2mN0pR7sT"
    # {"status":2001,"message":"Processing"}
    # {"status":2000,"message":"Ok","hash":"Stw0Ae","link":"https://appforshare.io/i/Stw0Ae","qrcode":"https://appforshare.io/i/Stw0Ae/qr"}
  4. Step 4, Pro and Team

    Builds over 100 MB: use the CLI

    One request to the Diawi compatible endpoint carries up to 100 MB. The CLI sends bigger builds in parts and resumes after a dropped connection, up to your plan's file limit (2 GB on Pro, 4 GB on Team). It takes the same options under its own names: --comment, --password and --email.

    export APPFORSHARE_TOKEN=afs_your_token
    npx appforshare upload app.ipa --comment "Fixes the login crash" --password "$LINK_PASSWORD" --email [email protected]
    All CLI commands
  5. Step 5, Pro and Team

    Give testers one link that stays

    A Diawi link points at one upload. A channel link points at whatever build is in the channel now, so testers keep one link and one QR code for the whole project. Add channel to the form (or --channel to the CLI) and pick an address such as /c/acme-beta. iPhones get the iOS build and Android phones the Android build from the same link.

    curl https://appforshare.io/api/ci/diawi -F token=$APPFORSHARE_TOKEN -F [email protected] -F channel=beta
    npx appforshare channel-address acme-beta --channel beta --app com.example.shop
    Custom channel address
  6. Step 6, Every plan

    Tell testers about the iPhone check

    Diawi warns a tester whose device is not in the build after they identify it in its web app. On AppForShare the tester runs the free UDID finder once and taps Remember this device. From then on every iOS install page says whether the build includes that iPhone before they tap Install, and when it does not, they can copy the UDID or send the iPhone to you.

    Remember my iPhone
  7. Step 7, Pro and Team

    Swap the plugins

    fastlane: replace the diawi action with appforshare, which takes the build from gym or gradle and takes email: and password:. GitHub Actions: use appforshare/appforshare-action@v1 with the email and password inputs. Jenkins and Bitrise: an AppForShare plugin and step are coming; until they are published, run the CLI in a shell step.

    # fastlane (fastlane add_plugin appforshare, APPFORSHARE_TOKEN set)
    appforshare(release_notes: "Fixes the login crash", email: ["[email protected]"], channel: "beta")
    CI guides

Field mapping

DiawiAppForShare
tokenYour AppForShare API token (afs_...), in the field or as Authorization: Bearer
fileThe build: .ipa, a zipped .app, .apk or .aab, up to 100 MB per request
passwordInstall link password, 4 to 128 characters
commentRelease notes shown on the install page
callback_urlAn https address we call once with the result, when the build is ready or failed
callback_emailsUp to 5 addresses that get the install link by email
installation_notificationsAccepted and ignored. Use the daily install email or a webhook instead
find_by_udidAccepted and ignored. Testers use Remember this device instead
wall_of_appsAccepted and ignored. There is no public app wall
status: 2000, 2001, 4000The same codes, with hash, link and qrcode when done

Also accepted: channel, to put the build into a channel when it is ready. The upload endpoint is https://appforshare.io/api/ci/diawi and the status endpoint https://appforshare.io/api/ci/diawi/status.

Questions

Which plan do I need?
The Diawi compatible API, the CLI and CI uploads are on Pro and Team. Install links, the QR code, passwords, the UDID finder and the iPhone check on install pages work on every plan.
Do my old Diawi links move over?
No. Diawi links stay on Diawi until they run out. Upload the builds your testers still need here and send the new links, or one channel link that keeps working for later builds.
Does .aab work?
Yes, with an account. An .aab is turned into one universal APK testers install from the link. Diawi does not take .aab files.
What about install notifications?
Turn on the daily install email for a project (Pro and Team): one mail a day with the installs by build, device and country, and no mail on days with no installs. Webhooks to Slack, Microsoft Teams, Google Chat or Discord can post each install.
How long do links last?
Without an account 3 days, on Free 7 days, on Pro and Team as long as you subscribe. Diawi counts its link life from the last install; ours counts from the upload on Free.

Weighing the two first? Read AppForShare vs Diawi. For every endpoint, see the CI API reference.