Zum Hauptinhalt springen
Alternativen

Spezifische Updates an einzelne User oder Gruppen senden

Lass deine User eine Beta-Version testen, ohne TestFlight oder den Google-Beta-Prozess. Füge einfach einen Button in deiner Ionic App hinzu – und sie sind dabei!

So sendest du ein bestimmtes Update an einen einzelnen Nutzer oder eine Gruppe Capgo Blog-Illustration

Vorwort

Wenn du, wie ich mit meinen Apps, das Update-System von Capgo zu schätzen beginnst, kommt dir irgendwann der Gedanke: „Was wäre, wenn ich mehr könnte?“

Mir ging es genauso, aber da ich der Macher von Capgo bin, konnte ich mir das Ganze genauer ansehen!

Da alles Open Source ist, hast du diese Möglichkeit auch :)

Die nächste Hürde im Capacitor App-Distributionsprozess ist es, Teammitglieder dazu zu bringen, die Updates zu testen!

Bei TestFlight ist das Problem simpel: Leute in dein Team zu holen und ihnen klarzumachen, wie sie es bekommen, kostet viel Zeit!

Und natürlich läuft bei jedem Submit an Apple dieser zufällige Review-Prozess durch einen Bot, der mal 5 Minuten oder mal 5 Stunden braucht – man weiß es nie.

Dadurch wurde meine Präsentation schon oft verzögert…

Bei Google ist es sogar noch schlimmer – das große Rätsel meines Lebens: Eine Production-Version zu releasen dauert unter 2 Stunden, ein Closed-Beta-Release aber 1–2 Tage.

Lösung

Um das zu lösen, habe ich das Channel-System in Capgo gebaut.

npx @capgo/cli@latest bundle upload -c production wird an alle User verteilt (wenn der Production-Channel auf Default steht)

Wenn du das tust npx @capgo/cli@latest bundle upload -c development landet die Version in einem anderen Channel, das lässt sich automatisieren in GitHub Action.

Dann hast du 2 Wege, wie User die Updates aus dem Channel bekommen

Der vollautomatische Weg

Das kann nützlich sein, wenn du kein eigenes Backend für das Channel-Management aufsetzen möchtest – so lässt es sich schnell implementieren.

Bei dieser Variante musst du nur einen deiner Channels so einstellen, dass er auf 'self' gesetzt werden kann.

„self“ in Capgo erlauben

Füge dies dann in der code deiner Ionic-App hinzu. Am besten nutzt du es, nachdem der User auf einen Button wie „Für Beta registrieren“ geklickt hat.

import { CapacitorUpdater } from '@capgo/capacitor-updater'

const deviceId = await CapacitorUpdater.setChannel({ channel: 'beta' })

Manueller Weg

Ideal für dein internes Team und schnell umgesetzt. Lass User ihre deviceID aus deiner App kopieren und sie dir manuell schicken; dieser code hilft dir dabei:

import { CapacitorUpdater } from '@capgo/capacitor-updater'

const deviceId = await CapacitorUpdater.getDeviceId()

Verstecke einen Button irgendwo in deiner App oder zeige ihn nur eingeloggten Usern mit einer admin Rolle an, zum Beispiel.

Gehe dann zur Web-App oder Native App Capgo, logge dich als App-Admin ein, wähle deine App und öffne die Geräteliste.

Gib dann die deviceID in die Suchleiste ein, klicke auf das gefundene Gerät, klicke auf den Channel-Link und wähle den development, bitte bitte deinen Teammate, die App erneut zu öffnen, 30 Sek. zu warten und sie dann zu schließen.

Er sollte deine Version erhalten.

Automatischer Weg

Das kann für deine Beta-Tester nützlich sein, ist aber aufwendiger umzusetzen.

Wie beim manuellen Weg musst du die deviceID ermitteln.

import { CapacitorUpdater } from '@capgo/capacitor-updater'

const deviceId = await CapacitorUpdater.getDeviceId()

Aber dieses Mal musst du es automatisch an dein Backend senden – wie du das genau umsetzt, überlasse ich dir.

Ich empfehle dir, sie in einer Datenbank zu speichern, um dir später die Arbeit zu erleichtern.

Dein Backend muss sie dann auch an das Capgo Backend senden. Hier sind zwei code Beispiele:

NodeJS
import axios from 'axios'

await axios.post('https://api.capgo.app/device', {
  app_id: 'YOUR_APP_ID',
  device_id: 'DEVICE_ID',
  channel: 'CHANNEL_NAME', // The name of the channel, or undefined if version_id provided
  version_id: 'VERSION_NAME' // this is optional, if provide it will override the channel, that useful when you want to debug only one user.
}, {
  headers: {
    authorization: 'YOUR_API_KEY' // choose a key with 'write' or 'all' rights
  }
})
Cloudflare
addEventListener('fetch', (event) => {
  event.respondWith(
    handleRequest(event.request).catch(
      err => new Response(err.stack, { status: 500 })
    )
  )
})

async function handleRequest(request) {
  const { pathname, method } = new URL(request.url)
  const body = await request.json()
  const newBody = JSON.stringify({
    app_id: 'YOUR_APP_ID',
    device_id: body.device_id,
    channel: 'alpha'
  })
  const newUrl = new URL('https://api.capgo.app/device')
  const options = {
    headers: {
      authorization: 'YOUR_API_KEY',
    },
    method: 'POST',
    body: newBody
  }

  if (request.method === 'DELETE') {
    // DELETE the channel link
    options.method = 'DELETE'
    return fetch(newUrl.toString(), options)
  }

  return fetch(newUrl.toString(), options)
}

Sende die device_id einfach per POST im Body an die deployte URL, um sie hinzuzufügen, oder per DELETE zum Löschen.

Nach der Konfiguration kannst du einen Button in deiner App zum Opt-in für den Channel einbauen und prüfen, ob dies in der Web-App übernommen wurde.

Du kannst auch senden null um das Override zu entfernen

Wenn du programmatisch prüfen musst, welches Override auf einem Gerät gesetzt ist, kannst du dieselbe URL abrufen

import axios from 'axios'

const res = await axios.get('https://api.capgo.app/device?app_id=YOUR_APP_ID&device_id=DEVICE_ID', {
  headers: {
    authorization: 'YOUR_API_KEY' // choose a key with 'write' or 'all' rights
  }
})

console.log('data', res.json())

Weiterlesen: Wie du ein bestimmtes Update an einen Nutzer oder eine Gruppe sendest

Wenn du es nutzt Spezifische Updates an einzelne User oder Gruppen senden um Channel-Routing und Staged Rollout zu planen, verbinde es mit Kanäle für die Implementierungsdetails in Channels, Kanäle für die Implementierungsdetails in Channels, Kanäle für die Implementierungsdetails in Channels, Beta-Testing-Lösung für den Produkt-Workflow in der Beta-Testing-Lösung, und Version-Targeting-Lösung für den Produkt-Workflow in der Version-Targeting-Lösung.

Live-Updates für Capacitor-Apps

Wenn ein Bug im Web-Layer live ist, liefere den Fix über Capgo aus, statt Tage auf die App-Store-Freigabe zu warten. Nutzer bekommen das Update im Hintergrund, während native Änderungen im normalen Review-Prozess bleiben.

Neues aus unserem Blog

Capgo gibt dir die besten Insights, um eine wirklich professionelle Mobile App zu erstellen.