Zum Hauptinhalt springen




Beim Kochen mit einem mobilen Gerät ist nichts schlimmer, als dass sich der Bildschirm mitten in einem Rezeptschritt ausschaltet. Erfahren Sie, wie die Küchenseite von BettyCrocker.com die Wake Lock-API verwendet hat, um dies zu verhindern.


Aktualisiert

Betty Crocker ist seit fast einem Jahrhundert Amerikas Quelle für modernen Kochunterricht und vertrauenswürdige Rezeptentwicklung. 1997 gestartet, seine Website BettyCrocker.com
Heute werden monatlich mehr als 12 Millionen Besucher empfangen. Nach ihnen implementierte die Wake Lock API, es ist
Indikatoren von
Kaufversuch
waren ungefähr 300% höher
für Wake-Lock-Benutzer im Vergleich zu allen Benutzern.

Die pensionierten iOS- und Android-Apps

Freigegeben an viel Fanfare Im Jahr 2014 hat Betty Crocker kürzlich ihre Apps aus dem Apple App Store und dem Google Play Store abgerufen, nachdem sie ihre Prioritäten aufgehoben hatten. Betty Crockers Team hat es lange Zeit vorgezogen, der mobilen Website neue Funktionen hinzuzufügen, anstatt den iOS / Android-Apps. Die technische Plattform, auf der die iOS / Android-Anwendungen erstellt wurden, war veraltet und das Unternehmen verfügte nicht über die Ressourcen, um zukünftige Updates und Wartungen der Anwendungen zu unterstützen. Die Webanwendung war auch objektiv viel verkehrsreicher, moderner und leichter zu verbessern.

IOS / Android Apps hatten eine Killer-Feature, die seine Benutzer jedoch liebten:

Millennial Cooking Pro Tipp: Die @BettyCrocker Die mobile App wird nicht gedimmt oder stürzt ab, wenn Sie einem Rezept folgen. - -@ AvaBeilke

Der 80% von Menschen kocht mit einem Gerät in der Küche, aber Dimmen und Bildschirmsperre sind ein Problem. Was hat getan @BettyCrocker machen? Ihre App wurde aktualisiert, sodass sie NICHT abgeblendet ist, wenn Benutzer ein Rezept verwenden. - -@Katie_Tweedy_

Bringen Sie die Killer-Funktion mit der Wake Lock-API ins Web

Wenn Sie mit einem Gerät kochen, gibt es nichts Frustrierenderes, als den Bildschirm mit schmutzigen Händen oder sogar der Nase berühren zu müssen, wenn sich der Bildschirm ausschaltet. Betty Crocker fragte sich, wie sie die Hauptfunktion ihrer iOS / Android-Apps auf die Web-App übertragen könnten. Dann fanden sie es heraus
Fugu-Projekt und die Wake Lock API.

teigige Finger-5594163

Die Wake Lock-API bietet eine Möglichkeit, zu verhindern, dass das Gerät den Bildschirm dimmt oder sperrt. Diese Fähigkeit ermöglicht neue Erfahrungen, für die bisher eine iOS / Android-Anwendung erforderlich war. Die Wake Lock-API reduziert den Bedarf an Raubkopien und potenziell stromhungrigen Lösungen.

Fordern Sie eine Aktivierungssperre an

Um eine Aktivierungssperre anzufordern, müssen Sie anrufen navigator.wakeLock.request () Methode, die a zurückgibt WakeLockSentinel Objekt. Sie werden dieses Objekt als verwenden
Sentinel-Wert. Der Browser kann die Anforderung aus verschiedenen Gründen ablehnen (z. B. weil der Akku zu schwach ist). Daher empfiehlt es sich, den Anruf in a zu verpacken versuche ... zu fangen Aussage.

Aktivieren Sie eine Aktivierungssperre

Sie benötigen auch eine Möglichkeit, eine Aktivierungssperre aufzuheben, die durch Aufrufen erreicht wird Veröffentlichung () Methode von WakeLockSentinel Objekt. Wenn Sie die Aktivierungssperre nach Ablauf einer bestimmten Zeit automatisch aufheben möchten, können Sie sie verwenden window.setTimeout () anrufen Veröffentlichung (), wie im folgenden Beispiel gezeigt.


Lassen wakeLock = Null;


const requestWakeLock = asynchron () => {
try {
wakeLock = erwarten Navigator.wakeLock.request('Bildschirm');
wakeLock.addEventListener('release', () => {
console.Log('Wake Lock was released');
});
console.Log('Wake Lock is active');
} catch (err) {
console.Error(`${err.Süßkartoffel}, ${err.Botschaft}`);
}
};


erwarten requestWakeLock();
Fenster.setTimeout(() => {
wakeLock.release();
wakeLock = Null;
}, 5000);

Die Umsetzung

Mit der neuen Web-App sollten Benutzer in der Lage sein, problemlos durch ein Rezept zu navigieren, Schritte auszuführen und sogar wegzugehen, ohne den Bildschirm zu sperren. Um dieses Ziel zu erreichen, baute das Team zunächst einen schnellen Front-End-Prototyp als Proof of Concept und zum Sammeln von UX-Informationen.

Nachdem sich der Prototyp als nützlich erwiesen hatte, entwarfen sie eine
Vue.js Komponente
das könnte mit all deinen Marken geteilt werden (Bettycrocker,
Pillsburyy Esslöffel). Obwohl nur Betty Crocker über iOS- und Android-Apps verfügte, verfügen alle drei Websites über eine gemeinsame Codebasis, sodass sie die Komponente einmal und dann überall bereitstellen konnten, wie in den folgenden Screenshots gezeigt.

www-bettycrocker-com_-5724685
Aktivierungssperrschalter von BettyCrocker.com.
www-pillsbury-com_-2503224
Aktivierungssperrschalter von Pillsbury.com.
www-Esslöffel-com_-1430753
Aktivierungssperrschalter von Tablespoon.com.

Bei der Entwicklung der Komponente auf der Grundlage des modernisierten Rahmens des neuen Standorts lag ein starker Fokus auf dem
ViewModel MVVM-Musterschicht. Das Team programmierte auch im Hinblick auf die Interoperabilität, um Funktionen in neuen und älteren Site-Frameworks zu ermöglichen.

Um die Sichtbarkeit und Benutzerfreundlichkeit zu verfolgen, integrierte Betty Crocker die analytische Verfolgung wichtiger Ereignisse in den Aktivierungssperr-Lebenszyklus. Das Team verwendete die Rollenverwaltung, um die Aktivierungssperrkomponente für die anfängliche Produktionsbereitstellung an einem einzelnen Standort bereitzustellen, und stellte die Funktion nach Überwachung des Seitenstatus und der Verwendung für die übrigen Standorte bereit. Sie überwachen weiterhin Analysedaten basierend auf der Verwendung dieser Komponente.

Aus Sicherheitsgründen für Benutzer erstellte das Team eine erzwungene Zeitüberschreitung, um die Aktivierungssperre nach einer Stunde Inaktivität zu deaktivieren. Die endgültige Implementierung, für die sie sich entschieden hatten, war kurzfristig ein Kippschalter auf allen Rezeptseiten ihrer Websites. Auf lange Sicht sehen sie eine überarbeitete Rezeptseitenansicht.

Der Wake-Lock-Container

var wakeLockControl = () => {
Rückkehr importieren( './wakeLock');
};

Export Standard {
components: {
wakeLockControl: wakeLockControl,
},
Daten() {
Rückkehr {
config: {},
wakeLockComponent: '',
};
},
methods: {
init: Funktion(config) {
Este.config = config || {};
wenn ('wakeLock' im Navigator && 'request' im Navigator.wakeLock) {
Este.wakeLockComponent = 'wakeLockControl';
} else {
console.Log('Browser not supported');
}
},
},
};

Die Aktivierungssperrkomponente

<template>
<div class="wakeLock">
<div class="textAbove"></div>
<label class="switch" :aria-label="settingsInternal.textAbove">
<input type="checkbox" @change="onChange()" v-model="isChecked">
<span class="slider round"></span>
</label>
</div>
</template>

<script type="text/javascript">
import debounce from 'lodash.debounce';

const scrollDebounceMs = 1000;

export default {
props: {
settings: { type: Object },
},
data() {
return {
settingsInternal: this.settings || {},
isChecked: false,
wakeLock: null,
timerId: 0,
};
},
created() {
this.$_raiseAnalyticsEvent('Wake Lock Toggle Available');
},
methods: {
onChange: function() {
if (this.isChecked) {
this.$_requestWakeLock();
} else {
this.$_releaseWakeLock();
}
},
$_requestWakeLock: async function() {
try {
this.wakeLock = await navigator.wakeLock.request('screen');
this.$_handleAbortTimer();
document.addEventListener(
'visibilitychange',
this.$_handleVisibilityChange,
);
window.addEventListener(
'scroll',
debounce(this.$_handleAbortTimer, scrollDebounceMs),
);
this.$_raiseAnalyticsEvent('Wake Lock Toggle Enabled');
} catch (e) {
this.isChecked = false;
}
},
$_releaseWakeLock: function() {
try {
this.wakeLock.release();
this.wakeLock = null;
this.$_handleAbortTimer();
document.removeEventListener(
'visibilitychange',
this.$_handleVisibilityChange,
);
window.removeEventListener(
'scroll',
debounce(this.$_handleAbortTimer, scrollDebounceMs),
);
} catch (e) {
console.log(`Wake Lock Release Error: ${e.name}, ${e.message}`);
}
},
$_handleAbortTimer: function() {
if (this.timerId !== 0) {
clearTimeout(this.timerId);
this.timerId = 0;
}
if (this.isChecked) {
this.timerId = setTimeout(
this.$_releaseWakeLock,
this.settingsInternal.timeoutDurationMs,
);
}
},
$_handleVisibilityChange: function() {
if (this.isChecked) {
this.$_releaseWakeLock();
this.isChecked = false;
}
},
$_raiseAnalyticsEvent: function(eventType) {
let eventParams = {
EventType: eventType,
Position: window.location.pathname || '',
};
Analytics.raiseEvent(eventParams);
},
},
};
</script>

Ergebnisse

Die Vue.js-Komponente wurde an allen drei Standorten implementiert und lieferte hervorragende Ergebnisse. Im Zeitraum vom 10. Dezember 2019 bis zum 10. Januar 2020 meldete BettyCrocker.com die folgenden Kennzahlen:

  • Von allen Betty Crocker-Benutzern mit einem Wake Lock API-kompatiblen Browser hat der 3.5% die Funktion sofort aktiviert und sie zu einer der Top 5-Aktionen gemacht.
  • Die Sitzungsdauer für Benutzer, die die Aktivierungssperre aktiviert haben, war 3,1-mal länger als für Benutzer, die dies nicht getan haben.
  • Die Absprungrate für Benutzer, die die Aktivierungssperre aktiviert haben, war 50% niedriger als für Benutzer, die die Aktivierungssperre nicht verwendet haben.
  • Die Kaufabsichtsindikatoren waren für Wake-Lock-Benutzer im Vergleich zu allen Benutzern um ca. 300% höher.

3.1×

Längere Sitzungsdauer

300%

Höhere Kaufabsichtsindikatoren

Schlussfolgerungen

Betty Crocker hat mit der Wake Lock API fantastische Ergebnisse erzielt. Sie können die Funktion selbst testen, indem Sie auf einer ihrer Websites nach Ihrem Lieblingsrezept suchen (Bettycrocker,
Pillsburyoder Esslöffel) und aktivieren die Verhindern Sie, dass der Bildschirm beim Kochen dunkel wird Hebel.

Wake Lock-Anwendungsfälle hören nicht an Rezeptstellen auf. Andere Beispiele sind Bordkarten- oder Ticketanwendungen, bei denen der Bildschirm eingeschaltet bleiben muss, bis der Barcode gescannt wurde, Anwendungen im Kiosk-Stil, bei denen der Bildschirm kontinuierlich eingeschaltet bleibt, oder webbasierte Präsentationsanwendungen, die verhindern, dass der Bildschirm während einer Präsentation inaktiv wird.

In einem umfassenden Artikel auf dieser Website haben wir alles zusammengestellt, was Sie über die Wake Lock-API wissen müssen. Viel Spaß beim Lesen und viel Spaß beim Kochen!

Vielen Dank

das Person, die Teig knetet Foto mit freundlicher Genehmigung von
Julian Hochgesang
im Unsplash.