Vorwort
Wenn Sie sich mit dem Update-System von Capgo vertraut machen, wie ich es für meine 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 erlebt habe, ist, dass ich andere Teammitglieder bitten muss, die Updates zu testen!
Bei TestFlight ist das Problem einfach, Leute in Ihr Team zu bringen und ihnen zu erklären, wie sie es bekommen können, 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 diesen Prozess verzögert...
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 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 Alle Benutzer werden aktualisiert (wenn der Produktionskanal auf Standard eingestellt ist)
If Sie tun, dann landet die Version auf einem anderen Kanal, dies kann in __CAPGO_KEEP_0__ 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 zu implementieren
Mit dieser Methode müssen Sie nur eines tun: Einer Ihrer Kanäle erlauben, sich selbst zu setzen
Erlauben Sie __CAPGO_KEEP_0__ selbst zu setzen
Und fügen Sie dann dies in der __CAPGO_KEEP_0__ Ihres Ionic-Apps ein, für den besten Erfolg verwenden Sie dies nach dem Klick eines Benutzers auf einen Button wie ‘für Beta registrieren’

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' })
Erlauben Sie Benutzern, ihre Geräte-ID von Ihrer App zu kopieren und sie Ihnen manuell zuzusenden, dieses __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 Beispiel für eine Rolle.
Dann gehe zur Web-App oder zur nativen App Capgo, melde dich als App-Admin an, wähle deine App, klicke auf die Geräteliste.
Dann gib im Suchfeld den GeräteID ein, klicke auf das gefundenen Gerät und klicke dann auf den Kanal-Link, wähle den development, bitte bitte deinen Teamkollegen, die App erneut zu öffnen, warte 30 Sekunden und öffne sie dann wieder.
Er sollte deine Version erhalten.
Automatische Methode
Dies kann für deine Beta-Tester nützlich sein, dies ist jedoch länger zu implementieren.
Ähnlich wie bei der manuellen Methode, musst du 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 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)
}
Senden Sie einfach Ihren device_id im Körper der Anfrage an die bereitgestellte URL mit POST an, 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 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())
Fahren Sie mit How to send specific update to one user or a group fort
Wenn Sie "Channels" verwenden How to send specific update to one user or a group um die Kanalrouten und die geplante Rollout zu planen, verbinden Sie es mit Channels für die Implementierungsdetails in Channels, 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 Version-Zielsystem für den Produktworkflow in Version-Zielsystem.