Поделиться через


Создание надстройки уведомления C++ для Electron

В этом руководстве показано, как создать собственный надстройку C++, которая использует API уведомлений Windows App SDK в приложении Electron. Это отличная отправная точка для понимания собственных аддонов перед тем как погрузиться в более сложные сценарии.

Необходимые условия

Шаг 1. Создание собственного C++-модуля

Используйте интерфейс командной строки Winapp для создания шаблона надстройки C++:

npx winapp node create-addon --template cpp --name nativeWindowsAddon

При этом создается папка с: nativeWindowsAddon/

  • addon.cc — Код C++ с вызовом API Windows
  • binding.gyp — настройка сборки для нативной компиляции

Команда также добавляет build-addon скрипт в ваш package.json.

Создайте надстройку:

npm run build-addon

Шаг 2. Добавление кода уведомления

Откройте nativeWindowsAddon/addon.cc и обновите его, чтобы использовать API уведомлений Windows App SDK. Созданный шаблон включает необходимые заголовки Windows SDK и Windows App SDK.

Добавьте включения для API уведомлений.

#include <winrt/Microsoft.Windows.AppNotifications.h>
#include <winrt/Microsoft.Windows.AppNotifications.Builder.h>

Добавьте функцию, отображающую уведомление Windows:

Napi::Value ShowNotification(const Napi::CallbackInfo& info) {
    Napi::Env env = info.Env();

    try {
        std::string title = info[0].As<Napi::String>().Utf8Value();
        std::string message = info[1].As<Napi::String>().Utf8Value();

        winrt::Microsoft::Windows::AppNotifications::Builder::AppNotificationBuilder builder;
        builder.AddText(winrt::to_hstring(title));
        builder.AddText(winrt::to_hstring(message));

        auto notification = builder.BuildNotification();
        winrt::Microsoft::Windows::AppNotifications::AppNotificationManager::Default().Show(notification);

        return Napi::Boolean::New(env, true);
    } catch (const winrt::hresult_error& e) {
        Napi::Error::New(env, winrt::to_string(e.message())).ThrowAsJavaScriptException();
        return env.Null();
    }
}

Зарегистрируйте функцию в методе Init :

exports.Set("showNotification", Napi::Function::New(env, ShowNotification));

Шаг 3. Создайте надстройку

npm run build-addon

Шаг 4. Проверка уведомления

Откройте src/index.js и загрузите надстройку:

const addon = require('../nativeWindowsAddon/build/Release/nativeWindowsAddon.node');

Добавьте тестовый вызов:

addon.showNotification('Hello from Electron!', 'This notification uses the Windows App SDK.');

Запустите приложение:

npm start

Появится уведомление Windows.

Шаг 5. Обновление удостоверения отладки

Каждый раз, когда вы изменяете appxmanifest.xml, выполните следующие действия:

npx winapp node add-electron-debug-identity

Дальнейшие действия