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 Capacitor-App-Verteilungsprozess erlebt habe, ist es, andere Teammitglieder zum Testen der Updates zu bringen!
Mit TestFlight ist das Problem einfach, aber es dauert Zeit, Leute in Ihr Team zu bringen und ihnen zu erklären, wie sie es bekommen können!
Und natürlich muss jeder Apple-Versand ein zufälliges Review-Prozess durchlaufen, der von einem Bot durchgeführt wird und 5 Minuten oder 5 Stunden dauern kann, man weiß nie.
Das hat mich oft zu spät gestellt…
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 dieses Problem zu lösen, 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 gesetzt ist)
Wenn Sie das tun npx @capgo/cli@latest bundle upload -c development Dann landet die Version in einem anderen Kanal, dies kann in der 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 die Kanal-Einstellung erstellen möchten, dies ist schnell umzusetzen.
Mit diesem einen, müssen Sie nur eines Ihrer Kanäle zulassen, um selbst Einstellungen vorzunehmen.

Und dann fügen Sie dies in der code Ihres Ionic-Apps ein, für den besten Erfolg, verwenden Sie dies nachdem der Benutzer auf einen Button wie “für Beta anmelden” klickt.
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.setChannel({ channel: 'beta' })
Manueller Weg
Dies kann nützlich sein für Ihre interne Team, dies ist schnell umzusetzen. Benutzer erlauben, ihre Geräte-ID von Ihrer App zu kopieren und sie Ihnen manuell zu senden, diese code wird Ihnen dabei helfen:
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
Ein Button verstecken Sie irgendwo in Ihrer App, oder zeigen Sie den Button nur an, wenn Benutzer mit Ihrem App verbunden sind. admin Rolle, zum Beispiel.
Dann gehe zu der Webanwendung oder der native App Capgo, melde dich als App-Admin an, wähle deine App, klicke auf die Geräteliste.
Dann gib in der Suchleiste die Geräte-ID ein, klicke auf das gefundenen Gerät und klicke dann auf den Kanal-Link, wähle den development, bitte deinen Teamkollegen, das App erneut zu öffnen, 30 Sekunden zu warten und dann zu schließen.
Er sollte deine Version erhalten.
Automatische Methode
Dies kann für deine Beta-Tester nützlich sein, dies ist jedoch länger zu implementieren.
Das Gleiche wie die manuelle Methode, du musst die Geräte-ID erhalten
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
Aber diesmal musst du sie automatisch an deinen Backend senden, ich lasse dir entscheiden, wie du das machst.
Ich werde dir nur vorschlagen, sie in einer Datenbank zu speichern, das wird deine spätere Arbeit erleichtern.
Dann musst du sie 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-Methode, 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 null um die Überschreibung zu entfernen
Wenn Sie programmatisch überprüfen müssen, welche Überschreibung 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 How to send specific update to one user or a group zur Planung der Kanalrouten und der geplanten Rollout verbinden, verbinden Sie es mit Kanäle für die Implementierungsdetails in Kanäle, Kanäle für die Implementierungsdetails in Kanälen Kanäle für die Implementierungsdetails in Kanälen Beta-Testlösung für den Produktworkflow in der Beta-Testlösung Versionziel-Lösung für den Produktworkflow in der Versionziel-Lösung