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에서 필요한 System.AppUserModel.ID 속성을 설정합니다.

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(AppUserModelID)

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

알림 XML 스키마

알림 메시지 개요

빠른 시작: 알림 메시지 보내기

빠른 시작: 알림 메시지 보내기

알림 메시지에 대한 지침 및 검사 목록

알림 템플릿에 이미지를 추가하는 방법

알림 메시지 설정을 검사 방법

알림 템플릿을 선택하고 사용하는 방법

알림 메시지에서 활성화를 처리하는 방법

알림 메시지를 옵트인하는 방법

알림 템플릿 선택

알림 오디오 옵션