Vorwort
Wenn Sie mit dem Update-System von Capgo beginnen, wie ich es für meine Apps getan habe, werden Sie das Gefühl entwickeln, “Was wenn ich mehr will?”
Mir ging das auch so, aber da ich der Schöpfer von Capgo bin, konnte ich einen Blick darauf werfen!
Da alles Open-Source ist, haben Sie diese Macht auch:)
Der nächste Schmerz, den ich im Capacitor-App-Verteilungsprozess hatte, war es, andere Teammitglieder zum Testen der Updates zu bringen!
Mit TestFlight ist das Problem einfach, aber die Menschen in dein Team zu bringen und ihnen zu erklären, wie man es bekommt, ist zeitaufwändig!
Und natürlich muss jeder Mal, wenn Sie zu Apple senden, ein zufälliger Review-Prozess durch einen Bot abgelaufen sein, der 5 Minuten oder 5 Stunden dauern kann, Sie wissen nie.
Mir ist das viele Male mein Vortrag verzögert worden…
Und bei Google ist das noch schlimmer, die große Rätsel meines Lebens, eine Produktionsversion zu veröffentlichen dauert weniger als 2 Stunden, aber eine enge Beta zu veröffentlichen dauert 1–2 Tage.
Lösung
Um dies zu beheben, habe ich das Kanal-System in Capgo erstellt.
npx @capgo/cli@latest bundle upload -c production aktualisiert sich auf alle Benutzer (wenn der Produktionskanal auf Standard eingestellt ist)
Wenn Sie das tun npx @capgo/cli@latest bundle upload -c development dann landet die Version in einem anderen Kanal, dies kann in __CAPGO_KEEP_0__ automatisiert werden. GitHub-Aktion.
Sie haben dann zwei Möglichkeiten, um Benutzern Updates vom Kanal zu liefern
Superautomatische Methode
Diese kann nützlich sein, wenn Sie keinen eigenen Backend-Service für die Kanal-Einstellung erstellen möchten, dies ist schnell umzusetzen.
Mit diesem einen, benötigen Sie nur, dass Sie einem Ihrer Kanäle die Möglichkeit geben, selbst zu sein, um es zu setzen.

Und fügen Sie dann dies in der code Ihres Ionic-Apps hinzu, für den besten Erfolg verwenden Sie dies am besten, nachdem der Benutzer auf einen Button wie „Registrieren für Beta“ geklickt hat.
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.setChannel({ channel: 'beta' })
Manuelle Methode
Dies kann für Ihre interne Team nützlich sein, dies ist schnell umzusetzen. Lassen Sie die Benutzer ihr Geräte-ID aus Ihrer App kopieren und senden Sie sie Ihnen manuell, dies code wird Ihnen helfen, es zu erhalten:
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
Hüllen Sie eine Schaltfläche irgendwo in Ihrer App, oder zeigen Sie die Schaltfläche nur an verbundene Benutzer mit einem admin Beispielrolle
Gehe dann zum Web-App oder zur native App Capgo, melde dich als App-Admin an, wähle deine App, klicke auf die Geräteliste.
Dann geben Sie in der Suchleiste die Geräte-ID ein, klicken Sie auf das gefundenen Gerät und klicken Sie dann auf den Kanal-Link, wählen Sie die developmentÖffne die App erneut, warte 30 Sekunden und öffne sie dann erneut.
Er sollte Ihre Version erhalten.
Automatische Methode
Dies kann für Ihre Beta-Tester nützlich sein, dies ist länger umzusetzen.
Das Gleiche wie die manuelle Methode, Sie müssen die Geräte-ID erhalten
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
Dieses Mal müssen Sie sie jedoch automatisch an Ihren Backend senden, ich lasse Ihnen entscheiden, wie Sie das tun.
I empfehle Ihnen, es in einer Datenbank zu speichern, das wird Ihr Leben später erleichtern.
Dann müssen Sie es in Ihrem Backend an 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)
}
Und senden Sie einfach Ihren device_id im Body an die bereitgestellte URL mit POST, um hinzuzufügen und DELETE-Methode, um zu löschen.
Nachdem dies konfiguriert ist, versuchen Sie, in Ihrer App einen Button hinzuzufügen, um sich dem Kanal anzumelden, und überprüfen Sie im Web-App, ob dies gesetzt wurde.
Sie können auch null um die Überschreibung zu entfernen
Wenn Sie programmatisch überprüfen müssen, welche Überschreibung auf einem Gerät gesetzt ist, können Sie 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 verwenden How to send specific update to one user or a group um Kanalrouting und eine geplante Rollout zu planen, verbinden Sie es mit Kanäle zur Implementierungsdetail in Kanäle Kanäle zur Implementierungsdetail in Kanäle Kanäle zur Implementierungsdetail in Kanäle Testlösung für Beta zur Produktworkflow in Testlösung für Beta Zielgruppenlösung für Versionen zur Produktworkflow in Zielgruppenlösung für Versionen