Vorwort
Wenn Sie sich mit dem Update-System von Capgo vertraut machen, wie ich es bei meinen Apps getan habe, werden Sie das Gefühl entwickeln, “Was wenn ich noch mehr will?”
Ich hatte das Gefühl auch, 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, dass ich andere Teammitglieder bitten musste, die Updates zu testen!
Mit TestFlight ist das Problem einfach, aber das Einbringen von Leuten in Ihr Team und das Erklären, wie man es bekommt, ist zeitaufwendig!
Und natürlich, jede Mal, wenn Sie zu Apple senden, haben Sie ein zufälliges Review-Verfahren durch einen Bot, der 5 Minuten oder 5 Stunden brauchen kann, Sie wissen nie
Ich habe viele Male meine Vorstellung durch dieses… verzögert
Und bei Google ist das noch schlimmer, das 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 Channel-System in Capgo erstellt
npx @capgo/cli@latest bundle upload -c production wird sich an alle Benutzer (wenn der Produktionskanal auf Standard eingestellt ist) aktualisieren
If Sie tun, dann landet die Version auf einem anderen Kanal, dies kann in der __CAPGO_KEEP_0__ Aktion automatisiert werden. npx @capgo/cli@latest bundle upload -c development Dann haben Sie 2 Möglichkeiten, um Benutzern die Updates vom Kanal zu liefern. GitHub action.
Dies kann nützlich sein, wenn Sie keinen eigenen Backend für den Kanal erstellen möchten, dies ist schnell umzusetzen.
Mit dieser Methode müssen Sie nur zulassen, dass einer Ihrer Kanäle selbstständig ist.
Zulassen Sie die Selbstständigkeit in der __CAPGO_KEEP_0__
Und fügen Sie dann diese in der __CAPGO_KEEP_0__ Ihres Ionic-Apps hinzu, für den besten Erfolg verwenden Sie dies nach dem Klick auf einen Button wie „Registrieren für Beta“

And then add this in the code of your Ionic app, for best experience, use this after the user clicks on a button like “register for beta”
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.setChannel({ channel: 'beta' })
Zulassen Sie es Benutzern, ihre Geräte-ID aus Ihrer App zu kopieren und sie manuell an Sie zu senden, diese __CAPGO_KEEP_0__ wird Ihnen dabei helfen:
This can be useful for your internal team, this is fast to implement. Allow users to copy their deviceID from your app and send it to you manually, this code will help you to get it:
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
Hide a button somewhere in your app, or show the button to only connected users with a admin Rolle, zum Beispiel.
Dann gehe zu der Web-App 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 den GeräteID ein, klicke auf das gefundenen Gerät und klicke dann auf den Channel-Link, wähle die development, bitte deinen Teamkollegen, das App erneut zu öffnen, warte 30 Sekunden und öffne es dann wieder.
Er sollte deine Version erhalten.
Automatische Methode
Das kann für deine Beta-Tester nützlich sein, dies ist jedoch länger zu implementieren.
Genau wie die manuelle Methode, du musst 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 entscheiden, wie du das machst.
Ich werde dir nur vorschlagen, ihn in einer Datenbank zu speichern, das wird dein Leben 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 Body an die bereitgestellte URL mit POST und add und DELETE Methode, um hinzuzufügen und 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 Ü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())
Fahren Sie fort von Wie man spezifische Updates an einen Benutzer oder eine Gruppe sendet
Wenn Sie Wie man spezifische Updates an einen Benutzer oder eine Gruppe sendet um die Kanalrouten und die geplante Rollout zu planen, verbinden Sie es mit Kanäle für die Implementierungsdetails in Kanäle, Kanäle für die Implementierungsdetails in Kanäle, Kanäle für die Implementierungsdetails in Kanäle, Beta-Testlösung für den Produktworkflow in Beta-Testlösung, und Versionsziel-Lösung für den Produktworkflow in Versionsziel-Lösung.