So geht's: Abfragen und Setzen von Menüpunkten der App

Veröffentlicht am 11. Dezember 2022 von Jan Bunk


Für manche Websites kann es nützlich sein, die Menüpunkte der Apps dynamisch zu ändern. Das kannst du mit diesen JavaScript-Funktionen erreichen.

Verwendung der JavaScript-Funktionen

Schau dir gerne auch die executeWhenAppReady() Funktion von unser App-Helfer-Skript. Sie stellt sicher, dass deine Website nicht versucht, mit der App zu interagieren, bevor sie fertig ist oder wenn deine Website mit einem normalen Browser geladen wird (ReferenceError, function is not defined).

getMenuItems

Mit dieser Funktion erhältst du eine Liste von Objekten, die alle Menüpunkte repräsentieren, die gerade angezeigt werden.


<script>
    try {
        // returns a list of objects representing the menu items
        let menuItems = (await getMenuItems())["menuItems"];
    }
    catch (e) {
        // Can occur if:
        // - the app couldn't connect to the native code. Should be very unlikely.
        console.log(e);
    }
</script>
    

setMenuItems

Mit dieser Funktion kannst du die Menüpunkte ändern, die angezeigt werden sollen.


<script>
    try {
        // example for a menu item object
        let newMenuItem = {
            name: "Contact",
            action: {
                urlToRedirectTo: "https://webtoapp.design/contact",
                javascriptToExecute: null,
                elementToClickSelector: null,
                isFavoriteAction: false,
                isShareAction: false,
                isOpenExternallyAction: false,
                isSettingsAction: false
            },
            icon: null,
            children: []
        };

        // get the currently displayed menu items
        let allMenuItems = (await getMenuItems())["menuItems"];

        // add the new menu item to the list of menu items
        allMenuItems.push(newMenuItem);

        // display the list of menu items, including the new menu item
        await setMenuItems(allMenuItems);
    }
    catch (e) {
        // Can occur if:
        // - the app couldn't connect to the native code. Should be very unlikely.
        console.log(e);
    }
</script>
    

convertElementToMenuItem

Dies ist eine Hilfsfunktion, um ein Menüpunkt-Objekt zu erhalten, das dem Klicken auf ein bestimmtes Element, normalerweise ein Link oder eine Schaltfläche, entspricht.


<a href="https://webtoapp.design/" id="my-link">My Link</a>

<script>
    let myLinkElement = document.getElementById("my-link");

    let myMenuItem = convertElementToMenuItem(myLinkElement);
    /*
        The result will look something like this:
        {
            name: "My Link",
            action: {
                urlToRedirectTo: null,
                javascriptToExecute: null,
                elementToClickSelector: "#my-link",
                isFavoriteAction: false,
                isShareAction: false,
                isOpenExternallyAction: false,
                isSettingsAction: false
            },
            icon: null,
            children: []
        };

        or (depending on the app configuration)

        {
            name: "My Link",
            action: {
                urlToRedirectTo: "https://webtoapp.design/",
                javascriptToExecute: null,
                elementToClickSelector: null,
                isFavoriteAction: false,
                isShareAction: false,
                isOpenExternallyAction: false,
                isSettingsAction: false
            },
            icon: null,
            children: []
        };
    */
</script>
    

Push-Benachrichtigungs-Übersicht