Vorwort
Wenn Sie mit dem Update-System von Capgo anfangen, sich zu freuen, wie ich es bei meinen Apps tue, werden Sie das Gefühl entwickeln, ‘Was wenn ich 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 :)
The nächste Schmerzen, die ich in der Capacitor-App-Verteilungsprozess erlebe, ist, dass andere Teammitglieder die Updates testen müssen!
Bei TestFlight ist das Problem einfach, Menschen in Ihr Team aufzunehmen und ihnen zu erklären, wie sie es bekommen können, ist zeitaufwändig!
Und natürlich, jede Mal, wenn Sie zu Apple senden, haben Sie ein zufälliges Bewertungsverfahren durch einen Bot, der 5 Minuten oder 5 Stunden brauchen kann, Sie wissen nie.
Mir ist es oft passiert, dass meine Präsentation durch diesen Prozess verzögert wurde…
Und bei Google ist es noch schlimmer, die große Rätsel meines Lebens, eine Produktionsversion zu veröffentlichen dauert weniger als 2 Stunden, aber eine nahe 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 Alle Benutzer werden aktualisiert (wenn der Produktionskanal auf Standard gesetzt ist)
Wenn Sie das tun, dann landet die Version auf einem anderen Kanal, dies kann in __CAPGO_KEEP_0__-Aktion automatisiert werden. npx @capgo/cli@latest bundle upload -c development Sie haben dann 2 Möglichkeiten, um Benutzern die Updates vom Kanal zu liefern. GitHub action.
Dann haben Sie 2 Möglichkeiten, um Benutzern die Updates vom Kanal zu liefern.
Super automatische Weg
Dies kann nützlich sein, wenn Sie keinen eigenen Backend für den Kanal-Set erstellen möchten, dies ist schnell umzusetzen.
Mit diesem einen, brauchen Sie nur, einen Ihrer Kanäle, um selbst zu setzen.

Und fügen Sie dann dies in den code Ihres Ionic-Apps hinzu, für den besten Erfahrung, verwenden Sie dies nachdem der Benutzer auf einen Button wie „Registrieren für Beta“ klickt.
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.setChannel({ channel: 'beta' })
Manueller Weg
Dies kann nützlich sein für Ihr internes Team, dies ist schnell umzusetzen. Erlauben Sie Benutzern, ihre Geräte-ID aus Ihrer App zu kopieren und sie Ihnen manuell zu senden, dieses code wird Ihnen helfen, es zu erhalten:
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 verbundenen Benutzern mit einem admin Rolle, zum Beispiel.
Dann gehen Sie zur Web-App oder nativen App Capgo, melden Sie sich als App-Admin an, wählen Sie Ihre App, klicken Sie auf die Geräte-Liste.
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, bitten Sie Ihren Teamkollegen, den App wieder zu öffnen, warten Sie 30 Sekunden und öffnen Sie ihn wieder.
Er sollte Ihre Version erhalten.
Automatische Methode
Dies kann für Ihre Beta-Tester nützlich sein, dies ist jedoch länger zu implementieren.
Gleich wie die manuelle Methode, Sie müssen den GeräteID haben
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
Aber diesmal müssen Sie es automatisch an Ihr Backend senden, ich lasse Ihnen entscheiden, wie Sie das tun.
Ich werde Ihnen nur empfehlen, es in einer Datenbank zu speichern, das wird Ihr Leben später erleichtern.
Dann müssen Sie es in Ihrem 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)
}
Und senden Sie einfach Ihren Geräte_ID in den Körper von ihm an die bereitgestellte URL mit POST, um hinzufügen und DELETE-Methode, um zu löschen.
Nachdem dies konfiguriert ist, versuchen Sie, einen Button in Ihrer App 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 zu überschreiben zu entfernen
Wenn Sie programmatisch überprüfen müssen, welche Überschreibung auf einem Gerät gesetzt ist, können Sie sie auf der gleichen URL abrufen
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())
Bleiben Sie bei How to send specific update to one user or a group
Wenn Sie "Capgo" verwenden How to send specific update to one user or a group um die Kanalrouten zu planen und die geplante Veröffentlichung zu verwalten, 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 Testing Lösung für den Produktworkflow in Beta Testing Lösung, und Version Ziel Lösung für den Produktworkflow in Version Ziel Lösung.