다음을 통해 공유


AppUserModelID를 통해 데스크톱 토스트 알림을 사용하도록 설정하는 방법

이 항목에서는 앱에 대한 바로 가기를 만들고, AppUserModelID 할당하고, 시작 화면에 설치하는 방법을 보여 줍니다. 앱 코드가 아닌 Windows Installer에서 이 작업을 수행하는 것이 좋습니다. 시작 화면이나 모든 프로그램에 유효한 바로 가기가 설치되어 있지 않으면 데스크톱 앱에서 알림 메시지를 표시할 수 없습니다.

메모

이 항목에서 사용되는 예제 메서드는 바탕 화면 알림 샘플에서 가져온 것입니다.

 

알아야 할 사항

기술

  • COM

필수 구성 요소

  • 라이브러리
    • C++: Runtime.object.lib
    • C#: Windows.Winmd
  • C#: Microsoft .NET Framework용 Windows API 코드 팩
  • Windows 8 이상을 지원하는 Microsoft Visual Studio 버전

지시

1단계: 생성할 바로 가기 준비

이 예제에서는 먼저 GetEnvironmentVariable 함수를 통해 사용자의 앱 데이터 폴더 경로를 결정합니다. 그런 다음 바로 가기의 전체 경로를 구성하고, 해당 이름의 바로 가기가 해당 위치에 없는지 확인하고, 바로 가기를 만들고 설치하는 다른 메서드에 해당 정보를 전달합니다.

바로 가기는 사용자별 또는 앱별로 배포할 수 있습니다.

HRESULT DesktopToastsApp::TryCreateShortcut()
{
    wchar_t shortcutPath[MAX_PATH];
    DWORD charWritten = GetEnvironmentVariable(L"APPDATA", shortcutPath, MAX_PATH);
    HRESULT hr = charWritten > 0 ? S_OK : E_INVALIDARG;

    if (SUCCEEDED(hr))
    {
        errno_t concatError = wcscat_s(shortcutPath, ARRAYSIZE(shortcutPath), L"\\Microsoft\\Windows\\Start Menu\\Programs\\Desktop Toasts App.lnk");
 
        hr = concatError == 0 ? S_OK : E_INVALIDARG;
        if (SUCCEEDED(hr))
        {
            DWORD attributes = GetFileAttributes(shortcutPath);
            bool fileExists = attributes < 0xFFFFFFF;

            if (!fileExists)
            {
                hr = InstallShortcut(shortcutPath);  // See step 2.
            }
            else
            {
                hr = S_FALSE;
            }
        }
    }
    return hr;
}

2단계: 바로 가기 만들기 및 시작 화면에 설치

이 예제는 또한 바로 가기의 속성 저장소를 가져온 다음, 이전에 정의된 변수 에서 필수 AppID 속성을 설정합니다.

HRESULT DesktopToastsApp::InstallShortcut(_In_z_ wchar_t *shortcutPath)
{
    wchar_t exePath[MAX_PATH];
    
    DWORD charWritten = GetModuleFileNameEx(GetCurrentProcess(), nullptr, exePath, ARRAYSIZE(exePath));

    HRESULT hr = charWritten > 0 ? S_OK : E_FAIL;
    
    if (SUCCEEDED(hr))
    {
        ComPtr<IShellLink> shellLink;
        hr = CoCreateInstance(CLSID_ShellLink, nullptr, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&shellLink));

        if (SUCCEEDED(hr))
        {
            hr = shellLink->SetPath(exePath);
            if (SUCCEEDED(hr))
            {
                hr = shellLink->SetArguments(L"");
                if (SUCCEEDED(hr))
                {
                    ComPtr<IPropertyStore> propertyStore;

                    hr = shellLink.As(&propertyStore);
                    if (SUCCEEDED(hr))
                    {
                        PROPVARIANT appIdPropVar;
                        hr = InitPropVariantFromString(AppId, &appIdPropVar);
                        if (SUCCEEDED(hr))
                        {
                            hr = propertyStore->SetValue(PKEY_AppUserModel_ID, appIdPropVar);
                            if (SUCCEEDED(hr))
                            {
                                hr = propertyStore->Commit();
                                if (SUCCEEDED(hr))
                                {
                                    ComPtr<IPersistFile> persistFile;
                                    hr = shellLink.As(&persistFile);
                                    if (SUCCEEDED(hr))
                                    {
                                        hr = persistFile->Save(shortcutPath, TRUE);
                                    }
                                }
                            }
                            PropVariantClear(&appIdPropVar);
                        }
                    }
                }
            }
        }
    }
    return hr;
}

발언

이 항목에 나와 있는 방법 대신 WiX(Windows Installer XML)와 같은 프레임워크를 사용하여 바로 가기를 생성하고 Windows Installer의 일부로 배포할 수 있습니다. 이 경우 이 코드는 앱 코드가 아닌 MSI에 포함되어야 합니다. 자세한 내용은 데스크톱 앱에서 토스트 알림 보내기 샘플에 포함된 샘플 WiX 구성 파일을 참조하세요.

빠른 시작: 데스크톱에서 토스트 알림 보내기

데스크톱 앱에서 토스트 알림 보내기 예제

애플리케이션 사용자 모델 ID(AppUserModelIDs)

방법: WiX(Windows Installer XML) 도구 설치

토스트 XML 스키마

Toast 알림 메시지 개요

빠른 시작: 토스트 알림 보내기

빠른 시작: 토스트 푸시 알림 보내기

토스트 알림에 대한 지침 및 검사 목록

토스트 템플릿에 이미지 추가하는 방법

토스트 알림 설정을 확인하는 방법

토스트 템플릿을 선택하고 사용하는 방법

토스트 알림에서의 활성화 처리 방법

토스트 알림을 수신하는 방법

토스트 템플릿 선택

토스트 오디오 옵션