locked
Объявления фоновых задач для IBackgroundTrigger в Package.appxmanifest RRS feed

  • Общие обсуждения

  • Приложение регистрирует некий триггер:

    IBackgroundTrigger trigger = new SmsMessageReceivedTrigger(rules);
    Подскажите, как следует его объявить в Package.appxmanifest, чтобы приложение смогло выполнить регистрацию?

    7 января 2016 г. 6:00

Все ответы

  • А в примерах тут ничего не нашли?
    7 января 2016 г. 6:55
  • В примерах есть очень неудачный пример с таймером.
    7 января 2016 г. 7:54
  • Я брала за основу данный пример, плюс читала книгу.
    7 января 2016 г. 14:36
  • Если вы брали за основу данный пример и читали книгу, то ответьте на поставленный вопрос, в чём проблема?
    7 января 2016 г. 14:49
  • Откопипастить две страницы текста? А смысл?
    7 января 2016 г. 16:35
  • Уважаемая Liliya Muray, интерфейс IBackgroundTrigger может быть реализован стандартным классом системного события:

    IBackgroundTrigger trigger1 = new SystemTrigger(SystemTriggerType.SmsReceived, false);

    При этом регистрация в манифесте будет выглядеть так:

    <Extension Category="windows.backgroundTasks" EntryPoint="ExampleNameSpace.ExampleClass">
    	<BackgroundTasks>
    		<Task Type="systemEvent" />
    	</BackgroundTasks>
    </Extension>

    Мы можем по примеру определить специализированный триггер таймера:

    IBackgroundTrigger trigger2 = new TimeTrigger(20, false);


    Его объявление в манифесте также не вызовет проблем, ибо xmlns заложен в функционал студии:

    <Extension Category="windows.backgroundTasks" EntryPoint="ExampleNameSpace.ExampleClass">
    	<BackgroundTasks>
    		<Task Type="timer" />
    	</BackgroundTasks>
    </Extension>

    А вот если я определяю специализированный триггер для приёма SMS спецтипа:

    IBackgroundTrigger trigger3 = new SmsMessageReceivedTrigger(rules);

    Что я должен писать в типе события:

    <Extension Category="windows.backgroundTasks" EntryPoint="ExampleNameSpace.ExampleClass">
    	<BackgroundTasks>
    		<Task Type="???" />
    	</BackgroundTasks>
    </Extension>

    Спициализированных триггеров появилось много:

    AppointmentStoreNotificationTrigger
    ActivitySensorTrigger
    BluetoothLEAdvertisementPublisherTrigger
    BluetoothLEAdvertisementWatcherTrigger
    CachedFileUpdaterTrigger
    ChatMessageNotificationTrigger
    ChatMessageReceivedNotificationTrigger
    CommunicationBlockingAppSetAsActiveTrigger
    ContactStoreNotificationTrigger
    ContentPrefetchTrigger
    DeviceConnectionChangeTrigger
    DeviceManufacturerNotificationTrigger
    EmailStoreNotificationTrigger
    GattCharacteristicNotificationTrigger
    MediaProcessingTrigger
    MobileBroadbandDeviceServiceNotificationTrigger
    MobileBroadbandPinLockStateChangeTrigger
    MobileBroadbandRadioStateChangeTrigger
    MobileBroadbandRegistrationStateChangeTrigger
    NetworkOperatorNotificationTrigger
    NetworkOperatorHotspotAuthenticationTrigger
    PhoneTrigger
    RcsEndUserMessageAvailableTrigger
    RfcommConnectionTrigger
    SmartCardTrigger
    SmsMessageReceivedTrigger
    StorageLibraryContentChangedTrigger
    SocketActivityTrigger

    Что писать в качестве типа в манифесте? Где про это написано в вашей книжке??! Покажите, пожалуйста!


    7 января 2016 г. 18:59
  • Уважаемая Liliya Muray, интерфейс IBackgroundTrigger может быть реализован стандартным классом системного события:

    IBackgroundTrigger trigger1 = new SystemTrigger(SystemTriggerType.SmsReceived, false);

    При этом регистрация в манифесте будет выглядеть так:

    <Extension Category="windows.backgroundTasks" EntryPoint="ExampleNameSpace.ExampleClass">
    	<BackgroundTasks>
    		<Task Type="systemEvent" />
    	</BackgroundTasks>
    </Extension>

    *****

    Что писать в качестве типа в манифесте? Где про это написано в вашей книжке??! Покажите, пожалуйста!

    Как работать с триггерами написано в картинках в главе 10 со страницы 142 в разделе фоновые задачи, ведь триггеры служат для запуска фоновых задач... Зачем писать кодом в манифесте, когда для этого есть дизайнер. Да в книге разобран один конкретный пример, даны описания триггеров для WinRT.
    7 января 2016 г. 20:41
  • 14 вариантов в студии, а триггеров в 3 раза больше, именно поэтому и возник вопрос.
    9 января 2016 г. 17:46
  • 14 вариантов в студии, а триггеров в 3 раза больше, именно поэтому и возник вопрос.

    Вот поэтому и приводится пример для одного триггера, остальные работают по аналогии.

    Я вам указала ресурс, где есть примеры почти на все случаи жизни, за исключение разве что очень редких. Там есть пример "SMS background task sample" вы его рассматривали?! Думаю, нет! Вам хочется, чтоб форум вам предоставлял готовые решения?! На мой взгляд, форум это сбор специалистов, которые не оказывают "медвежьих" услуг. Если вы хотите развиваться как специалист, то должны научится пользоваться литературой и уметь из одного примера получить, то что нужно вам, а не просто копипастить!

    Я вам указала книгу, где коротко рассказывается о жизненном цикле плиточных приложений и о фоновых задачах, как с ними работать, но вы усиленно плодите темы "как отменить регистрацию фоновой задачи", "как отладить фоновую задачу"... Как я уже говорила, если вам так трудно прочесть всю книгу, то хоть прочтите главу 10 полностью, раз уж решились писать плиточное приложение.

    10 января 2016 г. 6:47
  • >Вот поэтому и приводится пример для одного триггера, остальные работают по аналогии.

    Что значит по аналогии? Во-первых этой книге я попросту не могу доверять, в ней идёт речь про разработку приложений для магазина под Windows 8, в моём посту речь идёт о Windows 10, и про универсальное приложение. Мне достаточно того факта что один и тот же namespace присутствует на обоих платформах, но доступен только в Windows 10. Знаете сколько всего по такой аналогии может различаться?

    Во-вторых, в дизайнере НЕ ДОСТУПНЫ многие вещи, например чтобы прописать разрешение на приём тех же SMS нужно открывать код, добавлять xmlns и прописывать разрешение. Соответственно, если я разрешение на SMS прописываю РУКАМИ у меня в голове рождается АНАЛОГИЯ, что я должен расширить xmlns для фоновых задач и РУКАМИ прописать необходимый мне тип триггера, как вы выразились "аналогично". Плюс к этому в 8 и 10-ке различается пространство имён Capabilities для манифестов.

    >Там есть пример "SMS background task sample" вы его рассматривали?! Думаю, нет!

    Об этом изначально было написано, что это крайне неудачный пример, т.к. реализован на базе класса системного триггера:

    SystemTrigger trigger = new SystemTrigger(SystemTriggerType.SmsReceived, false);

    Кроме того, этот пример регистрации не актуален для Windows 10, в виду отсутствия:

    await BackgroundExecutionManager.RequestAccessAsync();

    Именно эти изменения доставляют массу проблем при написания нового кода, т.к. используешь неподходящую философию мышления.

    Пока я вижу, что вы много начитались и вместо того, чтобы на ответ сформулировать одно предложение спрашиваете зачем вам перепечатывать всю главу.


    10 января 2016 г. 8:16
  • Пока я вижу, что вы много начитались и вместо того, чтобы на ответ сформулировать одно предложение спрашиваете зачем вам перепечатывать всю главу.
    Я не только читаю, но и разрабатываю свое приложение, в нем пока много недочетов, но я исправляю их по мере сил и возможности. В своем приложении "WinGeoChat" я использую триггер для работы с Raw уведомлениями. Под Windows 10 исправлять ничего с триггерами не пришлось, единственное почему нет пакетов для Windows 10 - это проблемы с SQLite, так как из-за него не проходит сертификация. Так что я не только прочитала теорию, но и на практике использую полученные знания, а не ною что мне не пишут строчку кода для моего проекта.
    10 января 2016 г. 9:49
  • Я очень рад за вас и за ваше приложение. Никто строчку кода не просит, вопрос состоял в ссылке на официальную документацию, где прописано соответствие триггеров и разрешений. Вопрос актуален.
    11 января 2016 г. 6:03
  • Хотите сказать вы не умете пользоваться поиском и найти что-то типа это?
    11 января 2016 г. 7:06
  • Я не нашел подобного, если вы умеете пользоваться поиском - найдите.
    11 января 2016 г. 7:43
  • Здравствуйте,

    Давайте жить дружно, форум для свободного общения. Сергей если Вам не нравятся ответы Лилии, то не обязательно продолжать разговор. На МСДН никто ничем никому не обязан, все что делают участники и отвечающие, делается на добрую волю. Также не стоит помечать ответы не нарушающие правил форума, как оффтоп, лишь по причине что он не подходит или не верен, тем более обижать в описании пометки другого участника форума.

    Спасибо :)


    Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.

    11 января 2016 г. 8:32
  • Речь шла не об оскорблении, упаси, а о спаме, флуде, "просто написать" и тому подобном. Не более. Об этом и было сказано в следующем сообщении.
    11 января 2016 г. 8:37