Einleitung
Wenn Sie mit dem Update-System von Capgo beginnen, wie ich es bei meinen Apps getan habe, werden Sie das Gefühl entwickeln, “Was wenn ich mehr will?”
Das Gefühl hatte ich auch, aber als Schöpfer von Capgo konnte ich einen Blick darauf werfen!
Da alles Open-Source ist, haben Sie diese Macht auch:)
Der nächste Schmerz, den ich im Verteilungsprozess von Capacitor erlebt habe, ist die Überprüfung durch andere Teammitglieder!
Bei TestFlight ist das Problem einfach, aber die Einbringung von Personen in Ihr Team und die Erklärung, wie man es bekommt, ist zeitaufwendig!
Und natürlich muss jeder Apple-Versand einem zufälligen Review-Prozess durch einen Bot unterzogen werden, der 5 Minuten oder 5 Stunden dauern kann, man weiß nie.
Das hat mich oft zu spät in die Präsentation gebracht…
Und bei Google ist es noch schlimmer, die große Rätsel meines Lebens: Eine Produktionsversion wird in weniger als 2 Stunden freigegeben, aber eine enge Beta dauert 1–2 Tage.
Lösung
Um dies zu beheben, habe ich das Channel-System in Capgo erstellt.
npx @capgo/cli@latest bundle upload -c production Alle Benutzer werden aktualisiert (wenn das Produktionskanal auf Standard eingestellt ist)
If Sie tun npx @capgo/cli@latest bundle upload -c development Dann landet die Version auf einem anderen Kanal, dies kann in GitHub Aktion.
Dann haben Sie zwei Möglichkeiten, um Benutzern Updates vom Kanal zu liefern
Super automatischer Weg
Dies kann nützlich sein, wenn Sie keinen eigenen Backend für den Kanal einrichten möchten, dies ist schnell zu implementieren.
Mit diesem einen, brauchen Sie nur zuzulassen, dass einer Ihrer Kanäle selbst gesetzt werden kann.

code
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.setChannel({ channel: 'beta' })
Und dann fügen Sie dies in der
code
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
Ihrer Ionic-App hinzu, für den besten Erfolg, verwenden Sie dies nachdem der Benutzer auf einen Button wie “für Beta registrieren” klickt, admin Rolle, zum Beispiel.
Gehe dann zum Web-App oder zur nativen App Capgo, melde dich als App-Admin an, wähle deine App, klicke auf die Geräteliste.
Gehe dann in die Suchleiste und gib den GeräteID ein, klicke auf das gefundenen Gerät und klicke dann auf den Kanal-Link, wähle den development, bitte deinen Teamkollegen auf, das App erneut zu öffnen, warte 30 Sekunden und öffne es erneut.
Er sollte deine Version erhalten.
Automatische Methode
Diese kann für deine Beta-Tester nützlich sein, dies ist jedoch länger zu implementieren.
Genauso wie die manuelle Methode, musst du den GeräteID erhalten
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
Aber diesmal musst du ihn automatisch an deinen Backend senden, ich lasse dir die Entscheidung, wie du das machst.
Ich werde dir nur vorschlagen, ihn in einer Datenbank zu speichern, das wird deine Arbeit später erleichtern.
Dann musst du ihn in deinem Backend an die 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)
}
Senden Sie einfach Ihren device_id im Körper der Anfrage an die bereitgestellte URL mit POST, um hinzuzufügen und DELETE, um zu löschen.
Nachdem dies konfiguriert ist, versuchen Sie, in Ihrer App einen Button hinzuzufügen, um sich für den Kanal anzumelden, und überprüfen Sie im Web-App, ob dies gesetzt wurde.
Sie können auch senden null um die Überlagerung zu entfernen
Wenn Sie programmatisch überprüfen müssen, welche Überlagerung auf einem Gerät gesetzt ist, können Sie dies auf der gleichen URL
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())
Fortsetzen Sie von How to send specific update to one user or a group
Wenn Sie Channels verwenden How to send specific update to one user or a group um die Kanalrouten und die geplante Rollout zu planen, verbinden Sie es mit Kanäle für die Implementierungsdetails in Kanäle, Kanäle zur Implementierungsdetail in Kanäle, Kanäle zur Implementierungsdetail in Kanäle, Testlösung für Beta-Versionen zur Produktworkflow in Testlösung für Beta-Versionen, und Versionziel-Lösung zur Produktworkflow in Versionziel-Lösung.