op deze pagina: vind antwoorden op gemeenschappelijke vragen over Levende activiteiten zodat kunt u, hen uitvoeren leveren en oplossen betrouwbaarder over uw iOS apps en campagnes.
Algemene vragen
Een iOS-toepassing kan meerdere instanties van Live-activiteiten tegelijk uitvoeren, waaronder meerdere instanties die hetzelfde ActivityAttributes type gebruiken.
Ontwikkelaars kunnen geen limiet instellen voor het aantal Live-activiteitinstanties van een bepaald kenmerktype. U kunt zo veel starten als uw toepassingslogica vereist, bijvoorbeeld één voor doorlopende levering of rit. IOS past echter op systeemniveau een limiet toe op het aantal Live activity-instanties dat tegelijk actief of zichtbaar kan zijn.
In de praktijk:
-
iOS biedt doorgaans ondersteuning voor maximaal vijf gelijktijdige exemplaren van Live-activiteit per app.
-
Als u dit aantal overschrijdt, kan het systeem ophouden tonend sommige activiteiteninstanties of eindigen oudere degenen om middelen te besparen.
-
Elke instantie van Live-activiteit heeft een unieke
Activity.id, waarmee u deze afzonderlijk kunt bijwerken of beëindigen.
- iOS 16.1+: Basic Live-activiteiten ondersteunen
- iOS 17.2+: Functionaliteit van opstarten (extern starten zonder app te openen)
- iOS 18+: Ondersteuning voor uitzendkanalen voor op het publiek gebaseerde Live-activiteiten
dismissalDate in te stellen of activity.end() expliciet aan te roepen in uw app.Ontwikkelaarsvragen
ActivityConfiguration implementeren. Leer meer over configuratie Widget
LiveActivityAttributes -klasse gebruiken voor lokale en externe Live-activiteiten?Messaging.registerLiveActivity() .liveActivityID of channelID , mislukt de aanvraag zonder toezicht op het apparaat. Zorg altijd dat u bijhoudt welke Live-activiteitsinstanties actief zijn voor elke gebruiker.Ja, u kunt plaatselijk-begonnen evenals ver-begonnen Levende activiteiten in de Simulator van iOS testen.
-
Lokale: Dit omvat het creëren van, het bijwerken van, en het beëindigen van een Levende activiteit direct van uw app gebruikend ActivityKit APIs.
-
Verre: Als u de functionaliteit van Live-activiteiten op afstand wilt testen, integreert u onze Messaging SDK in uw app en gebruikt u de beschikbare API’s voor uitvoering om het starten, bijwerken en beëindigen op afstand naar uw testapparaat of iOS Simulator te verzenden. Gelijkaardig aan hoe de pushberichten momenteel met de integratie van Adobe SDKs kunnen worden getest.
liveActivityID en channelID?liveActivityID: Gebruikt voor individuele (eenheids) Levende activiteit gericht op specifieke gebruikers. Elke id vertegenwoordigt een unieke instantie van Live-activiteit.channelID: Wordt gebruikt voor het uitzenden van Live-activiteiten die naar het publiek worden verzonden. Alle gebruikers in het publiek ontvangen dezelfde updates op hetzelfde kanaal.
ActivityConfiguration heeft afzonderlijke sluitingen voor de inhoud van het Scherm van het Slot en de Dynamische inhoud van de Eilanden (uitgevouwen, compacte, en minimale staten), elk ontwerp onafhankelijk.Messaging.registerLiveActivity() , worden automatisch pushtokens voor u verzameld en beheerd door de SDK.ActivityKit zijn onderworpen aan door het systeem opgelegde beperkingen. Als u snel na elkaar probeert meerdere beginaanvragen te starten, kan iOS verdere start weigeren vanwege quota’s voor Live-activiteit of budgetbeperkingen. Na ongeveer 5 opeenvolgende beginpogingen, beginnen de verdere verzoeken mislukt tot een korte afkoelingsperiode voorbijgaat.Apple geeft geen exact numeriek uiteinde op voor (priority: 10) Live-activiteiten-updates met hoge prioriteit. Het systeem handhaaft een dynamisch intern budget dat beperkt hoe vaak dergelijke updates kunnen worden verzonden. Als er te veel updates met hoge prioriteit worden uitgegeven in een korte periode, kan iOS de daaropvolgende updates vertragen of vertragen.
Vertraging minimaliseren:
- prioritaire niveaus van het Saldo: Combineer standaard
(priority: 5)- en hoog(priority: 10)-updates, afhankelijk van het belang. - gebruik met mate hoge prioriteit: Reserve hoge prioriteit voor tijd-kritieke updates, zoals leveringsvooruitgang, ordestatus, of levende sportscores.
- de frequente updates van de Steun: Omvat
NSSupportsLiveActivitiesFrequentUpdatesin uw appInfo.plisten plaats het aan JA als u frequente updates nodig hebt.
Marktvragen
Bij het op afstand starten van een Live-activiteit via API’s voor Adobe-uitvoering:
-
U kunt een header
x-request-idin uw aanvraag opnemen. In het ideale geval moet elkeliveActivityIDeen-op-een relatie hebben met de bijbehorendex-request-id. Dit zorgt ervoor dat als er meerdere aanvragen worden ingediend met dezelfde combinatiex-request-idenliveActivityID, er slechts één instantie Live-activiteit wordt gestart op het apparaat en dubbele aanvragen worden genegeerd. -
Als de header
x-request-idwordt weggelaten, wordt elke aanvraag afzonderlijk behandeld. Dit kan ertoe leiden dat meerdere instanties van Live-activiteit met dezelfdeliveActivityIDworden gemaakt. In dergelijke gevallen kunnen toekomstige updates mislukken of slechts op één van de actieve exemplaren van toepassing zijn. -
De waarde
x-request-idmag niet opnieuw worden gebruikt in verschillendeliveActivityIDs-API-aanvragen.
API-vragen
timestamp en dismissal-date?timestamp: De huidige tijdperk waarin de gebeurtenis plaatsvindt, die voor alle gebeurtenissen is vereist.dismissal-date: Een toekomstige tijdperk waarin de Live-activiteit automatisch wordt beëindigd, alleen vereist voor “end”-gebeurtenissen.
attributes velden in elke updateaanroep verzenden?Ja, op basis van uw LiveActivityAttribute -klasse.
- Alle velden van het kenmerkobject, inclusief
liveActivityData, moeten bij elke oproep worden opgenomen, voor het starten, bijwerken of beëindigen. - Alleen de
content-state-velden geven aan wat er daadwerkelijk dynamisch verandert bij actieve activiteiten. - Neem ook een waakzaam object op. Hierdoor wordt de push behandeld als een bericht dat zichtbaar is voor de gebruiker, en niet als een achtergrond met stilte. Alleen vereist voor ‘start’-gevallen en anderszins optioneel.
1759937682requestId gebruiken voor meerdere API-aanroepen?requestId hebben om te zorgen voor immuniteitsprestatie en correcte tracering. Gebruik UUID’s of vergelijkbare unieke id’s.event in de payload wijzigen. Sommige organisaties geven echter de voorkeur aan aparte campagnes voor een betere analysetracering.Problemen oplossen
Vaak voorkomende oorzaken:
- Niet-overeenkomende aanroepen
liveActivityIDofchannelIDtussen starten en bijwerken. content-state-velden komen niet overeen met uwContentStatestruct.- De Live-activiteit is al beëindigd.
- De connectiviteitskwesties van het netwerk op het apparaat.
- De tijdperktijd die als tijdstempel wordt gebruikt, is niet up-to-date.
attributes-type wordt niet herkend. Wat moet ik controleren?- Verzeker de klassennaam precies (case-sensitive) met uw Swift struct naam aanpast
- Controleren of de structuur correct is gedefinieerd en geregistreerd
- Controleren op typos in de JSON-payload
- Bevestig dat de app-versie is geïnstalleerd met de live-activiteitsimplementatie
alert is optioneel en kan door iOS onder bepaalde omstandigheden worden onderdrukt, bijvoorbeeld in de modus Niet storen. Een actieve activiteit kan stil worden bijgewerkt, wat vaak het beoogde gedrag is. Het waarschuwingsveld is verplicht voor het verzenden van een externe start, anders behandelt appel het als een stille achtergrondmelding.- Controleer of uw widgetimplementatie correct toegang heeft tot
context.stateencontext.attributes. - Controleer of standaardwaarden of foutstatussen in de widgetinterface worden verwerkt.
- Gebruik het
LiveActivityAssuranceDebuggableprotocol om het schema te zuiveren. - Test met Adobe Assurance om te zien of er gegevens worden ontvangen.