Vorwort
Als Sie das Update-System von Capgo beginnen, sich zu genießen, werden Sie das Gefühl entwickeln, “Was wenn ich mehr will?”
Das Gefühl habe ich auch, aber da ich der Schöpfer von Capgo bin, konnte ich einen Blick darauf werfen!
Da alles offen ist, haben Sie diese Macht auch :)
Der nächste Schmerz, den ich im Capacitor-App-Verteilungsprozess erlebe, ist, dass andere Teammitglieder die Updates testen müssen!
Mit TestFlight ist das Problem einfach, aber die Einbringung von Personen in dein Team und das Erlernen, wie man es bekommt, ist zeitaufwendig!
Und natürlich hat jeder Apple-Versand ein zufälliges Bewertungsverfahren durch einen Bot, der 5 Minuten oder 5 Stunden dauern kann, man weiß nie.
Ich habe viele Male meine Präsentation durch diesen... verzögert.
Und bei Google ist es noch schlimmer, das große Rätsel meines Lebens, eine Produktionsversion veröffentlicht sich in weniger als 2 Stunden, aber eine nahe Beta veröffentlicht sich in 1–2 Tagen.
Lösung
Um dies zu beheben, habe ich das Kanal-System in Capgo erstellt.
npx @capgo/cli@latest bundle upload -c production wird sich auf alle Benutzer aktualisieren (wenn der Produktionskanal auf Standard gesetzt ist)
Wenn du das tust npx @capgo/cli@latest bundle upload -c development dann landet die Version auf einem anderen Kanal, dies kann in __CAPGO_KEEP_0__ automatisiert werden. GitHub action.
Dann hast du 2 Möglichkeiten, um Benutzern die Updates vom Kanal zu liefern.
Super automatische Methode
Dies kann nützlich sein, wenn Sie keinen eigenen Backend für den Kanal 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 dies zu setzen.

Und fügen Sie dann dies in der code Ihres Ionic-Apps hinzu, für den besten Erfolg verwenden Sie dies 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' })
Händische Methode
Dies kann nützlich sein für Ihr internes Team, dies ist schnell umzusetzen. Ermöglichen Sie es den Benutzern, ihre Geräte-ID aus Ihrer App zu kopieren und sie manuell an Sie zu senden, diese code wird Ihnen dabei helfen:
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
Verstecken Sie einen Button irgendwo in Ihrer App, oder zeigen Sie den Button nur an, wenn Benutzer mit einer bestimmten admin Rolle verbunden sind, zum Beispiel.
Dann gehen Sie zur Web-App oder zur nativen App Capgo, melden Sie sich als App-Admin an, wählen Sie Ihre App aus, klicken Sie 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 developmentWarten Sie 30 Sekunden und öffnen Sie die App erneut, um die Änderungen zu übernehmen.
Er sollte Ihre Version erhalten.
Automatische Methode
Dies kann für Ihre Beta-Tester nützlich sein, dies ist jedoch länger zu implementieren.
Dies ist gleich wie die manuelle Methode, Sie müssen den GeräteID erhalten.
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
Aber diesmal müssen Sie es automatisch an Ihren Backend senden, ich lasse Ihnen entscheiden, wie Sie das tun.
Ich werde Ihnen nur vorschlagen, es in einer Datenbank zu speichern, das wird Ihnen später das Leben erleichtern.
Dann müssen Sie es in Ihrem Backend an den 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 zu der bereitgestellten 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 in der Web-App, ob dies gesetzt wurde.
Sie können auch senden null um das Überschreiben zu entfernen
Wenn Sie programmatisch überprüfen müssen, welche Überschreibung auf einem Gerät gesetzt ist, können Sie dies auf derselben 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 Wie man eine spezifische Aktualisierung an einen Benutzer oder eine Gruppe sendet
Wenn Sie Wie man eine spezifische Aktualisierung an einen Benutzer oder eine Gruppe sendet um das Routing von Kanälen und die geplante Rollout zu planen, verbinden Sie es mit Kanäle Kanäle Kanäle Kanäle um die Implementierungsdetails in Kanälen zu sehen, Kanäle Beta Testlösung für das Produktworkflow in Beta Testlösung, und Versionziel-Lösung für das Produktworkflow in Versionziel-Lösung.