Chrome-apps zijn nauw geïntegreerd met het besturingssysteem van een gebruiker. Ze zijn ontworpen om buiten een browsertabblad te worden uitgevoerd, om robuust te werken in offline scenario's en scenario's met slechte connectiviteit en om veel krachtigere mogelijkheden te hebben dan beschikbaar zijn in een typische webbrowseromgeving. De app-container-, programmeer- en beveiligingsmodellen ondersteunen deze Chrome App-vereisten.
App-containermodel
De app-container beschrijft het uiterlijk en het laadgedrag van Chrome-apps. Chrome-apps zien er anders uit dan traditionele web-apps omdat de app-container geen traditionele UI-besturingselementen voor webpagina's toont; het bevat eenvoudigweg een leeg rechthoekig gebied. Hierdoor kan een app worden gecombineerd met 'native' apps op het systeem, en wordt voorkomen dat de gebruiker met de app-logica 'rommelt' door de URL handmatig te wijzigen.
Chrome-apps worden anders geladen dan webapps. Beide laden hetzelfde type inhoud: HTML-documenten met CSS en JavaScript; een Chrome-app wordt echter in de app-container geladen, niet op het browsertabblad. Ook moet de app-container het hoofddocument van de Chrome-app laden vanuit een lokale bron. Dit dwingt alle Chrome-apps om op zijn minst minimaal functioneel te zijn wanneer ze offline zijn en het biedt een plek om strengere beveiligingsmaatregelen af te dwingen.
Programmeermodel
Het programmeermodel beschrijft de levenscyclus en het venstergedrag van Chrome-apps. Net als bij native apps is het doel van dit programmeermodel om gebruikers en hun systemen volledige controle te geven over de levenscyclus van de app. De levenscyclus van de Chrome-app moet onafhankelijk zijn van het gedrag van een browservenster of een netwerkverbinding.
De 'gebeurtenispagina' beheert de levenscyclus van de Chrome-app door te reageren op gebruikersgebaren en systeemgebeurtenissen. Deze pagina is onzichtbaar, bestaat alleen op de achtergrond en kan automatisch worden gesloten door de systeemruntime. Het bepaalt hoe vensters worden geopend en gesloten en wanneer de app wordt gestart of beëindigd. Er kan slechts één 'evenementpagina' zijn voor een Chrome-app.
App-levenscyclus in één oogopslag
Zie App Lifecycle beheren voor gedetailleerde instructies over het gebruik van het programmeermodel. Hier volgt een korte samenvatting van de levenscyclus van de Chrome-app om u op weg te helpen:
Fase | Samenvatting |
---|---|
Installatie | Gebruiker kiest ervoor om de app te installeren en accepteert expliciet de machtigingen . |
Beginnen | De evenementenpagina wordt geladen, de 'start'-gebeurtenis wordt geactiveerd en app-pagina's worden geopend in vensters. U maakt de vensters die uw app nodig heeft, hoe ze eruit zien en hoe ze communiceren met de evenementenpagina en met andere vensters. |
Beëindiging | De gebruiker kan apps op elk moment beëindigen en de app kan snel worden hersteld naar de vorige staat. Gegevens opslaan beschermt tegen gegevensverlies. |
Update | Apps kunnen op elk moment worden bijgewerkt; De code die een Chrome-app uitvoert, kan echter niet veranderen tijdens een opstart-/beëindigingscyclus. |
Ongeïnstalleerd | Gebruiker kan apps actief verwijderen. Bij het verwijderen blijven er geen uitvoerende code of privégegevens achter. |
Beveiligingsmodel
Het beveiligingsmodel van Chrome Apps beschermt gebruikers door ervoor te zorgen dat hun informatie op een veilige manier wordt beheerd. Comply with CSP bevat gedetailleerde informatie over hoe u kunt voldoen aan het inhoudbeveiligingsbeleid. Dit beleid blokkeert gevaarlijke scripting, vermindert cross-site scripting-bugs en beschermt gebruikers tegen man-in-the-middle-aanvallen.
Als u de hoofdpagina van de Chrome-app lokaal laadt, kunt u een strengere beveiliging dan op internet afdwingen. Net als bij Chrome-extensies moeten gebruikers er tijdens de installatie expliciet mee instemmen de Chrome-app te vertrouwen; zij verlenen de app toestemming om toegang te krijgen tot hun gegevens en deze te gebruiken. Elke API die uw app gebruikt, heeft zijn eigen toestemming. Het Chrome Apps-beveiligingsmodel biedt ook de mogelijkheid om rechtenscheiding per venster in te stellen. Hierdoor kunt u de code in uw app die toegang heeft tot gevaarlijke API's minimaliseren, terwijl u deze nog steeds kunt gebruiken.
Chrome-apps hergebruiken de procesisolatie van Chrome-extensies en gaan nog een stap verder door opslag en externe inhoud te isoleren. Elke app heeft zijn eigen privéopslagruimte en heeft geen toegang tot de opslag van een andere app of persoonlijke gegevens (zoals cookies) voor websites die u in uw browser gebruikt. Alle externe processen zijn geïsoleerd van de app. Omdat iframes in hetzelfde proces worden uitgevoerd als de omringende pagina, kunnen ze alleen worden gebruikt om andere app-pagina's te laden. U kunt de object
gebruiken om externe inhoud in te sluiten ; deze inhoud wordt in een afzonderlijk proces van de app uitgevoerd.