Implementace poskytovatele kanálu v aplikaci Win32 (C++/WinRT)

Poznámka:

Některé informace se týkají předem vydaného produktu, který může být podstatně změněn před komerčním vydáním. Společnost Microsoft neposkytuje žádné záruky, výslovné ani implicitní, ohledně zde poskytnutých informací.

Tento článek vás provede vytvořením jednoduchého poskytovatele informačního kanálu, který zaregistruje identifikátor URI obsahu informačního kanálu a implementuje rozhraní IFeedProvider . Metody tohoto rozhraní jsou vyvolány panelem Widgets k vyžádání vlastních parametrů řetězce dotazu, obvykle pro podporu scénářů ověřování. Poskytovatelé informačních kanálů můžou podporovat jeden nebo více informačních kanálů.

Pokud chcete implementovat poskytovatele informačního kanálu pomocí C++/WinRT, přečtěte si téma Implementace zprostředkovatele informačního kanálu v aplikaci C# pro Windows (C++/WinRT).

Požadavky

  • Vaše zařízení musí mít povolený vývojářský režim. Další informace najdete v tématu Nastavení pro vývojáře.
  • Visual Studio 2026 nebo novější s úlohou vývoje aplikací WinUI Nezapomeňte přidat komponentu pro C++ (v143) z volitelného rozevíracího seznamu.

Vytvoření nové konzolové aplikace C++/WinRT win32

V sadě Visual Studio vytvořte nový projekt. V dialogovém okně Vytvořit nový projekt nastavte filtr jazyka na C++ a filtr platformy na Windows a pak vyberte šablonu projektu Konzolová aplikace systému Windows (C++/WinRT). Pojmenujte nový projekt ExampleFeedProvider. V tomto názorném postupu se ujistěte, že není zaškrtnuto políčko Umístit řešení a projekt do stejného adresáře . Po zobrazení výzvy nastavte cílovou verzi Windows pro aplikaci na 10.022631.2787 nebo novější.

Přidejte odkazy na balíčky NuGet Windows App SDK a Windows Implementation Library.

Tato ukázka používá nejnovější stabilní balíček NuGet sady Windows App SDK. V Průzkumníku řešení klikněte pravým tlačítkem na Reference a vyberte Spravovat balíčky NuGet.... Ve Správci balíčků NuGet vyberte kartu Procházet a vyhledejte "Microsoft.WindowsAppSDK". V rozevíracím seznamu Verze vyberte nejnovější stabilní verzi a klikněte na Nainstalovat.

Tato ukázka také používá balíček NuGet knihovny implementace systému Windows. V průzkumníku řešení klikněte pravým tlačítkem na Reference a vyberte Spravovat balíčky NuGet.... Ve správci balíčků NuGet vyberte kartu Procházet a vyhledejte Microsoft.Windows.ImplementationLibrary. V rozevíracím seznamu Verze vyberte nejnovější verzi a potom klikněte na Nainstalovat.

Do souboru předkompilované hlavičky pch.h přidejte následující direktivy include.

//pch.h 
#pragma once
#include <wil/cppwinrt.h>
#include <wil/resource.h>
...
#include <winrt/Microsoft.Windows.Widgets.Providers.h>

Poznámka:

Před všemi hlavičkami WinRT musíte nejprve zahrnout hlavičku wil/cppwinrt.h.

Abychom mohli správně vypnout aplikaci poskytovatele informačního kanálu, potřebujeme vlastní implementaci winrt::get_module_lock. Předem deklarujeme metodu SignalLocalServerShutdown, která se definuje v našem souboru main.cpp a nastaví událost, která signalizuje ukončení aplikace. Do souboru pch.h přidejte následující kód těsně pod direktivu #pragma once před ostatními include.

//pch.h
#include <stdint.h>
#include <combaseapi.h>

// In .exe local servers the class object must not contribute to the module ref count, and use
// winrt::no_module_lock, the other objects must and this is the hook into the C++ WinRT ref counting system
// that enables this.
void SignalLocalServerShutdown();

namespace winrt
{
    inline auto get_module_lock() noexcept
    {
        struct service_lock
        {
            uint32_t operator++() noexcept
            {
                return ::CoAddRefServerProcess();
            }

            uint32_t operator--() noexcept
            {
                const auto ref = ::CoReleaseServerProcess();

                if (ref == 0)
                {
                    SignalLocalServerShutdown();
                }
                return ref;
            }
        };

        return service_lock{};
    }
}


#define WINRT_CUSTOM_MODULE_LOCK

Přidejte třídu FeedProvider pro správu operací informačního kanálu

V sadě Visual Studio klikněte pravým tlačítkem na projekt ExampleFeedProvider v Průzkumníku řešení a vyberte Přidat –>Třída. V dialogovém okně Přidat třídu pojmenujte třídu FeedProvider a klikněte na Tlačítko Přidat.

Deklarace třídy, která implementuje rozhraní IFeedProvider

Rozhraní IFeedProvider definuje metody, které Widgets Board vyvolá za účelem zahájení operací s poskytovatelem informačního kanálu. Nahraďte definici prázdné třídy v souboru FeedProvider.h následujícím kódem. Tento kód deklaruje strukturu, která implementuje rozhraní IFeedProvider a deklaruje prototypy pro metody rozhraní.

// FeedProvider.h
#pragma once
struct FeedProvider : winrt::implements<FeedProvider, winrt::Microsoft::Windows::Widgets::Feeds::Providers::IFeedProvider>
{
    FeedProvider() {}

    /* IFeedrovider required functions that need to be implemented */
    void OnFeedProviderEnabled(winrt::Microsoft::Windows::Widgets::Feeds::Providers::FeedProviderEnabledArgs args);
    void OnFeedProviderDisabled(winrt::Microsoft::Windows::Widgets::Feeds::Providers::FeedProviderDisabledArgs args);
    void OnFeedEnabled(winrt::Microsoft::Windows::Widgets::Feeds::Providers::FeedEnabledArgs args);
    void OnFeedDisabled(winrt::Microsoft::Windows::Widgets::Feeds::Providers::FeedDisabledArgs args);
    void OnCustomQueryParametersRequested(winrt::Microsoft::Windows::Widgets::Feeds::Providers::CustomQueryParametersRequestedArgs args);
    /* IFeedProvider required functions that need to be implemented */

};

Implementace metod IFeedProvider

V následujících několika částech budeme implementovat metody IFeedProvider rozhraní. Než se ponoříte do metod rozhraní, přidejte následující řádky za FeedProvider.cpp direktivy include, aby se rozhraní API poskytovatele informačního kanálu zahrnula do oboru názvů winrt a povolí přístup k mapě, kterou jsme deklarovali v předchozím kroku.

Poznámka:

Objekty předané do metod zpětného volání rozhraní IFeedProvider jsou garantovány jako platné pouze v rámci zpětného volání. Odkazy na tyto objekty byste neměli ukládat, protože jejich chování mimo kontext zpětného volání není definováno.

// WidgetProvider.cpp
namespace winrt
{
    using namespace Microsoft::Windows::Widgets::Feeds::Providers;
}

OnFeedProviderEnabled

OnFeedProviderEnabled metoda je vyvolána, když informační kanál přidružený k poskytovateli je vytvořen hostitelem Widgets Board. V implementaci této metody vygenerujte řetězec dotazu s parametry, které budou předány adrese URL, která poskytuje obsah informačního kanálu, včetně všech nezbytných ověřovacích tokenů. Vytvořte instanci CustomQueryParametersUpdateOptions předáním FeedProviderDefinitionId z argumentů události, který identifikuje aktivovaný kanál, a řetězce dotazu. Získejte výchozí FeedManager a zavolejte SetCustomQueryParameters pro registraci parametrů řetězce dotazu na panel Widgets Board.

// FeedProvider.cs
void FeedProvider::OnFeedProviderEnabled(winrt::Microsoft::Windows::Widgets::Feeds::Providers::FeedProviderEnabledArgs args)
{
    std::wstringstream wstringstream;
wstringstream << args.FeedProviderDefinitionId().c_str() << L" feed provider was enabled." << std::endl;
    _putws(wstringstream.str().c_str());

    auto updateOptions = winrt::CustomQueryParametersUpdateOptions(args.FeedProviderDefinitionId(), L"param1&param2");
    winrt::FeedManager::GetDefault().SetCustomQueryParameters(updateOptions);
}

OnFeedProviderDisabled

OnFeedProviderDisabled je volána, když je panel widgetů, když byly všechny informační kanály pro tohoto poskytovatele zakázány. Poskytovatelé informačních kanálů nemusí provádět žádné akce v reakci na toto volání této metody. Volání metody je možné použít pro účely telemetrie nebo aktualizovat parametry řetězce dotazu nebo v případě potřeby odvolat ověřovací tokeny. Pokud aplikace podporuje pouze jednoho poskytovatele informačního kanálu nebo pokud jsou všichni poskytovatelé informačního kanálu podporovaní aplikací zakázáni, aplikace se může ukončit v reakci na toto zpětné volání.

// FeedProvider.cs

void FeedProvider::OnFeedProviderDisabled(winrt::Microsoft::Windows::Widgets::Feeds::Providers::FeedProviderDisabledArgs args)
{
    std::wstringstream wstringstream;
    wstringstream << args.FeedProviderDefinitionId().c_str() << L" feed provider was disabled." << std::endl;
    _putws(wstringstream.str().c_str());
}

OnFeedEnabled (Při zapnutí zdroje), OnFeedDisabled (Při vypnutí zdroje)

OnFeedEnabled a OnFeedDisabled jsou vyvolány panelem widgetů, pokud je informační kanál povolený nebo zakázaný. Poskytovatelé informačních kanálů nemusí provádět žádné akce v reakci na volání těchto metod. Volání metody je možné použít pro účely telemetrie nebo aktualizovat parametry řetězce dotazu nebo v případě potřeby odvolat ověřovací tokeny.

// FeedProvider.cs

void FeedProvider::OnFeedEnabled(winrt::Microsoft::Windows::Widgets::Feeds::Providers::FeedEnabledArgs args)
{
    std::wstringstream wstringstream;
    wstringstream << args.FeedDefinitionId().c_str() << L" feed was enabled." << std::endl;
    _putws(wstringstream.str().c_str());
}
// FeedProvider.cs

void FeedProvider::OnFeedDisabled(winrt::Microsoft::Windows::Widgets::Feeds::Providers::FeedDisabledArgs args)
{
    std::wstringstream wstringstream;
    wstringstream << args.FeedDefinitionId().c_str() << L" feed was disabled." << std::endl;
    _putws(wstringstream.str().c_str());
}

OnCustomQueryParametersRequested (při požadavku na vlastní parametry dotazu)

OnCustomQueryParametersRequested je vyvolán , když panel Widgets určuje, že vlastní parametry dotazu přidružené k poskytovateli informačního kanálu musí být aktualizovány. Tato metoda může být vyvolána v případě, že například operace pro načtení obsahu kanálu ze vzdálené webové služby selže. FeedProviderDefinitionId vlastnost CustomQueryParametersRequestedArgs předané do této metody určuje informační kanál, pro který jsou požadovány parametry řetězce dotazu. Zprostředkovatel by měl znovu vygenerovat řetězec dotazu a předat ho zpět na panel widgetů voláním SetCustomQueryParameters.

// FeedProvider.cs

void FeedProvider::OnCustomQueryParametersRequested(winrt::Microsoft::Windows::Widgets::Feeds::Providers::CustomQueryParametersRequestedArgs args)
{
    std::wstringstream wstringstream;
    wstringstream << L"CustomQueryParameters were requested for " << args.FeedProviderDefinitionId().c_str() << std::endl;
    _putws(wstringstream.str().c_str());

    auto updateOptions = winrt::CustomQueryParametersUpdateOptions(args.FeedProviderDefinitionId(), L"param1&param2");
    winrt::FeedManager::GetDefault().SetCustomQueryParameters(updateOptions);
}

Registrace objektu pro vytváření tříd, který vytvoří instanci FeedProvideru na žádost

Přidejte hlavičku, která definuje třídu FeedProvider, do zahrnutí na začátku souboru vaší aplikace main.cpp. Také zde budeme zařazovat mutex.

// main.cpp
...
#include "FeedProvider.h"
#include <mutex>

Oznamte událost, která aktivuje ukončení naší aplikace, a SignalLocalServerShutdown funkci, která nastaví tuto událost. Do main.cpp vložte následující kód.

// main.cpp
wil::unique_event g_shudownEvent(wil::EventOptions::None);

void SignalLocalServerShutdown()
{
    g_shudownEvent.SetEvent();
}

Dále budete muset vytvořit CLSID, který bude použit k identifikaci vašeho poskytovatele informačního kanálu pro aktivaci COM. Vygenerujte GUID v sadě Visual Studio tak, že přejdete na Tools->Vytvořit GUID. Vyberte možnost Static const GUID =, klikněte na Kopírovat a vložte ji do main.cpp. Aktualizujte definici GUID pomocí následující syntaxe C++/WinRT a nastavte název proměnné GUID feed_provider_clsid. Při balení aplikace ponechte komentářovanou verzi identifikátoru GUID, protože tento formát budete později potřebovat.

// main.cpp
...
// {80F4CB41-5758-4493-9180-4FB8D480E3F5}
static constexpr GUID feed_provider_clsid
{
    0x80f4cb41, 0x5758, 0x4493, { 0x91, 0x80, 0x4f, 0xb8, 0xd4, 0x80, 0xe3, 0xf5 }
};

Do main.cpppřidejte následující definici objektu pro vytváření tříd . Většinou se jedná o šablonový kód, který není specifický pro implementace poskytovatele kanálu. Všimněte si, že CoWaitForMultipleObjects čeká na aktivaci události vypnutí před ukončením aplikace.

// main.cpp
template <typename T>
struct SingletonClassFactory : winrt::implements<SingletonClassFactory<T>, IClassFactory>
{
    STDMETHODIMP CreateInstance(
        ::IUnknown* outer,
        GUID const& iid,
        void** result) noexcept final
    {
        *result = nullptr;

        std::unique_lock lock(mutex);

        if (outer)
        {
            return CLASS_E_NOAGGREGATION;
        }

        if (!instance)
        {
            instance = winrt::make<FeedProvider>();
        }

        return instance.as(iid, result);
    }

    STDMETHODIMP LockServer(BOOL) noexcept final
    {
        return S_OK;
    }

private:
    T instance{ nullptr };
    std::mutex mutex;
};

int main()
{
    winrt::init_apartment();
    wil::unique_com_class_object_cookie feedProviderFactory;
    auto factory = winrt::make<SingletonClassFactory<winrt::Microsoft::Windows::Widgets::Feeds::Providers::IFeedProvider>>();

    winrt::check_hresult(CoRegisterClassObject(
        feed_provider_clsid,
        factory.get(),
        CLSCTX_LOCAL_SERVER,
        REGCLS_MULTIPLEUSE,
        feedProviderFactory.put()));

    DWORD index{};
    HANDLE events[] = { g_shudownEvent.get() };
    winrt::check_hresult(CoWaitForMultipleObjects(CWMO_DISPATCH_CALLS | CWMO_DISPATCH_WINDOW_MESSAGES,
        INFINITE,
        static_cast<ULONG>(std::size(events)), events, &index));

    return 0;
}

Připravte aplikaci poskytovatele informačního kanálu

V aktuální verzi je možné jako poskytovatele informačních kanálů zaregistrovat pouze zabalené aplikace. Následující kroky vás provedou procesem zabalení aplikace a aktualizací manifestu aplikace pro registraci aplikace v operačním systému jako poskytovatele informačního kanálu.

Vytvoření projektu balení MSIX

V Průzkumníku řešeníklikněte pravým tlačítkem na své řešení a vyberte Přidat–>Nový projekt.... V dialogovém okně Přidat nový projekt vyberte šablonu Projekt balení aplikace pro Windows a klikněte na Další. Nastavte název projektu na ExampleFeedProviderPackage a klikněte na Vytvořit. Po zobrazení výzvy nastavte cílovou verzi na verzi 1809 nebo novější a klikněte na OK. Poté klikněte pravým tlačítkem myši na projekt ExampleFeedProviderPackage a vyberte Odkaz na projekt>. Vyberte projekt ExampleFeedProvider a klepněte na tlačítko OK.

Přidání odkazu na balíček sady Windows App SDK do projektu balení

Do projektu balíčku MSIX musíte přidat odkaz na balíček NuGet sady Windows App SDK. V Průzkumníku řešení poklikejte na projekt ExampleFeedProviderPackage a otevřete soubor ExampleFeedProviderPackage.wapproj. Do elementu Project přidejte následující kód XML.

<!--ExampleFeedProviderPackage.wapproj-->
<ItemGroup>
    <PackageReference Include="Microsoft.WindowsAppSDK" Version="1.5.231116003-experimentalpr">
        <IncludeAssets>build</IncludeAssets>
    </PackageReference>  
</ItemGroup>

Poznámka:

Ujistěte se, že verze zadaná v elementu PackageReference odpovídá nejnovější stabilní verzi, na kterou jste odkazovali v předchozím kroku.

Pokud je v počítači nainstalovaná správná verze sady Windows App SDK a nechcete v balíčku zabalit modul runtime sady SDK, můžete určit závislost balíčku v souboru Package.appxmanifest pro projekt ExampleFeedProviderPackage.

<!--Package.appxmanifest-->
...
<Dependencies>
...
    <PackageDependency Name="Microsoft.WindowsAppRuntime.1.5.233430000-experimental1" MinVersion="2000.638.7.0" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" />
...
</Dependencies>
...

Aktualizace manifestu balíčku

Ve Průzkumníku řešení klikněte pravým tlačítkem na soubor Package.appxmanifest a vyberte možnost Zobrazit kód, abyste otevřeli soubor XML manifestu. Dále je potřeba přidat deklarace oboru názvů pro některá rozšíření balíčků aplikací, které budeme používat. Do elementu nejvyšší úrovně Package přidejte následující definice oboru názvů.

<!-- Package.appmanifest -->
<Package
  ...
  xmlns:uap3="http://schemas.microsoft.com/appx/manifest/uap/windows10/3"
  xmlns:com="http://schemas.microsoft.com/appx/manifest/com/windows10"

Uvnitř elementu Application vytvořte nový prázdný prvek s názvem Extensions. Dbejte na to, aby to přišlo po uzavírací značce uap:VisualElements.

<!-- Package.appxmanifest -->
<Application>
...
    <Extensions>

    </Extensions>
</Application>

První rozšíření, které potřebujeme přidat, je rozšíření ComServer. Tím se zaregistruje vstupní bod spustitelného souboru v operačním systému. Toto rozšíření je ekvivalentem zabalené aplikace pro registraci serveru COM nastavením klíče registru a není specifické pro poskytovatele informačních kanálů. Přidejte následující element com:Extension jako podřízený prvek Extensions elementu. Změňte GUID v atributu Id elementu com:Class na GUID, který jste vygenerovali v předchozím kroku.

<!-- Package.appxmanifest -->
<Extensions>
    <com:Extension Category="windows.comServer">
        <com:ComServer>
            <com:ExeServer Executable="ExampleFeedProvider\ExampleFeedProvider.exe" Arguments="-RegisterProcessAsComServer" DisplayName="C++ Feed Provider App">
                <com:Class Id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" DisplayName="FeedProvider" />
            </com:ExeServer>
        </com:ComServer>
    </com:Extension>
</Extensions>

Dále přidejte rozšíření, které zaregistruje aplikaci jako poskytovatele informačního kanálu. V následujícím úseku kódu vložte prvek uap3:Extension jako podřízený prvek elementu Extensions. Nezapomeňte nahradit atribut ClassId elementu COM identifikátorem GUID, který jste použili v předchozích krocích.

<!-- Package.appxmanifest -->
<Extensions>
    ...
    <uap3:Extension Category="windows.appExtension">
        <uap3:AppExtension Name="com.microsoft.windows.widgets.feeds" DisplayName="ContosoFeed" Id="com.examplewidgets.examplefeed" PublicFolder="Public">
            <uap3:Properties>
                <FeedProvider Icon="ms-appx:Assets\StoreLogo.png" Description="FeedDescription">
                    <Activation>
                        <!-- Apps exports COM interface which implements IFeedProvider -->
                        <CreateInstance ClassId="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" />
                    </Activation>
                    <Definitions>
                        <Definition Id="Contoso_Feed"
                            DisplayName="Contoso_Feed Feed"
                            Description="Feed representing Contoso"
                            ContentUri="https://www.contoso.com/"
                            Icon="ms-appx:Images\StoreLogo.png">
                        </Definition>
                        <Definition Id="Fabrikam_Feed"
                            DisplayName="Fabrikam Feed"
                            Description="Feed representing Example"
                            ContentUri="https://www.fabrikam.com/"
                            Icon="ms-appx:Images\StoreLogo.png">
                        </Definition>
                    </Definitions>
                </FeedProvider>
            </uap3:Properties>
        </uap3:AppExtension>
    </uap3:Extension>
</Extensions>

Podrobné popisy a informace o formátu pro všechny tyto prvky naleznete v souboru XML manifestu balíčku informačního kanálu.

Přidání ikon do projektu balení

V Průzkumníku řešení klikněte pravým tlačítkem na váš ExampleFeedProviderPackage a vyberte Přidat novou> složku. Pojmenujte tuto složku ProviderAssets, protože se používá v Package.appxmanifest z předchozího kroku. Tady uložíme ikonu pro naše informační kanály. Jakmile přidáte požadované ikony, ujistěte se, že názvy obrázků odpovídají tomu, co následuje po Path=ProviderAssets\ ve vašem Package.appxmanifest nebo informační kanály se nezobrazí na panelu widgetů.

Testování poskytovatele kanálu

Ujistěte se, že jste vybrali architekturu, která odpovídá vašemu vývojovému počítači, z rozevíracího seznamu platformy řešení , například x64. V Průzkumníku řešeníklikněte pravým tlačítkem na vaše řešení a vyberte Sestavit řešení. Po dokončení klikněte pravým tlačítkem na ExampleWidgetProviderPackage a vyberte možnost Nasadit. Konzolová aplikace by se měla spustit při nasazení a ve výstupu konzoly uvidíte, že se feedy povolí. Otevřete panel widgetů a měli byste vidět nové informační kanály na záložkách podél horní části sekce kanálů.

Ladění vašeho poskytovatele informačního kanálu

Po přichycení vašich informačních kanálů platforma widgetů spustí aplikaci poskytovatele těchto kanálů, aby mohla přijímat a odesílat relevantní informace o nich. Pokud chcete ladit spuštěný datový kanál, můžete buď připojit ladicí program k aplikaci zprostředkovatele spuštěného kanálu, nebo můžete nastavit Visual Studio tak, aby po spuštění automaticky spustilo ladění procesu zprostředkovatele datového kanálu.

Chcete-li se připojit ke spuštěném procesu:

  1. V sadě Visual Studio klikněte na Ladit –> Připojit k procesu.
  2. Proveďte filtrování procesů a najděte požadovanou aplikaci poskytovatele kanálu.
  3. Připojte ladicí program.

Pokud chcete automaticky připojit ladicí program k procesu při počátečním spuštění:

  1. Ve Visual Studiu klikněte na Ladění –> Další cíle ladění –> Ladění nainstalovaného balíčku aplikace.
  2. Vyfiltrujte balíčky a najděte požadovaný balíček poskytovatele kanálu.
  3. Vyberte jej a zaškrtněte políčko s názvem Nespouštět, ale při spuštění ladit můj kód.
  4. Klepněte na tlačítko Připojit.

Převod konzolové aplikace na aplikaci pro Windows

Převod konzolové aplikace vytvořené v tomto názorném postupu na aplikaci pro Windows:

  1. Klikněte pravým tlačítkem myši na projekt ExampleWidgetProvider v Průzkumníku řešení a vyberte možnost Vlastnosti. Přejděte na Linker –> Systém a změňte subsystém z "konzoly" na "Windows". Tento úkon lze také provést přidáním <SubSystem>Windows</SubSystem> do části <Link>..</Link> souboru .vcxproj.
  2. V main.cpp změňte int main() na int WINAPI wWinMain(_In_ HINSTANCE /*hInstance*/, _In_opt_ HINSTANCE /*hPrevInstance*/, _In_ PWSTR pCmdLine, _In_ int /*nCmdShow*/).

Snímek obrazovky znázorňující vlastnosti projektu zprostředkovatele informačního kanálu C++ s typem výstupu nastaveným na aplikaci systému Windows

Publikování aplikace poskytovatele kanálu

Po vytvoření a otestování poskytovatele informačního kanálu můžete aplikaci publikovat v Microsoft Storu, aby si uživatelé nainstalovali informační kanály na svá zařízení. Podrobné pokyny k publikování aplikace najdete v tématu Publikování aplikace v Microsoft Storu.

Kolekce informačních kanálů

Po publikování aplikace v Microsoft Storu si můžete vyžádat, aby byla vaše aplikace zahrnutá do kolekce obchodů informačních kanálů, která uživatelům pomáhá zjišťovat aplikace, které obsahují informační kanály Windows. Pokud chcete odeslat žádost, podívejte se na Odeslání vašeho informačního kanálu nebo panelu pro přidání do kolekce obchodu.