Posted on 18. May 2017

Announcing Project Rome iOS SDK

Project Rome - это платформа для обеспечения беспрепятственного межсетевого и кросс-платформенного использования.  Цель Project Rome очень проста - работа пользователя с приложением не должна быть привязана к одному устройству больше, чем данные, которые должны привязываться к одному устройству. Ваши приложения, также как и ваши данные, должны перемещаться вместе с вами.

Раньше это означало переход между устройствами при сохранении одного пользовательского интерфейса на другом устройстве Windows. Несколько месяцев назад функции Project Rome были расширены на платформу Android, что позволяет вам начать сеанс пользования приложением на телефоне Android и продолжить его на ПК с операционной системой Windows, на Xbox One или даже в Surface Hub.

На сегодняшний день, поддержка Project Rome также доступна для платформы iOS. Здесь вы можете скачать Project Rome SDK для iOS.


Рассмотрение музыкального приложения Contoso

Пример Contoso Music хорошо показывает сценарии работы пользователя с приложением на разных устройствах.

Это приложение для потоковой передачи музыки UWP, которое работает на нескольких устройствах Windows, привязанных к одной и той же учетной записи Microsoft (MSA). Используя Project Rome, приложение работает таким образом, чтобы пользователь, передающий песню на ПК с ОС Windows, мог передать эту песню на свой Xbox. После этого, он всегда может переместить текущий плейлист на свой Windows Phone перед тем, как выйти на пробежку.

Расширение для iOS

Представим себе, что, основываясь на успехе версий Windows и Android, разработчик создает iOS-версию Contoso Music. Изучая его телеметрию через несколько месяцев, видим, что все приложения успешны также, как и его версии для Windows и Android. Однако в отзывах пользователей есть общая тема: Пользователи затрудняются с переключением между устройствами. Итак, планируем добавить такую возможность, чтобы пользователь могу слушать музыку на iPhone через наушники, а затем войти в гостиную и незамедлительно переключиться на воспроизведение той же музыкальной композиции через свой Xbox, подключенный к качественным динамикам.

С Project Rome iOS SDK мы можем создать мост между устройствами iOS и устройствами Windows в два этапа:

 

  • RemoteSystems API позволяет приложению обнаруживать устройства Windows, которыми владеет пользователь. RemoteSystems API позволит приложению Contoso Music обнаруживать эти устройства в той же сети или через облако.
  • После обнаружения устройств, RemoteLauncher API  запустит приложение Contoso Music на другом устройстве Windows.

 

Как это работает?

Чтобы переключиться с воспроизведения музыки с устройства iOS на устройство Windows, приложение должно распознать другое устройство. Для этого требуется использование MSA OAuth, чтобы получить разрешение на запрос для устройств, а затем обнаруживать дополнительные устройства, как показано на диаграмме ниже.


 

 

 

// Asynchronously initialize the Rome Platform.
  // Pass in self as class implements the CDOAuthCodeProviderDelegate protocol.
  [CDPlatform startWithOAuthCodeProviderDelegate:self completion:^(NSError* clientError) {
                                              if (clientError)
                                              {
                                                  // Handle error
                                                  return;
                                              }
 
                                              // Handle success, show discovery screen
                                      }];
 
// Implementation of CDOAuthCodeProviderDelegate
// The Rome SDK calls this delegate method when it needs an OAuth Access Code from the application.
- (NSError*)getAccessCode:(NSString*)signinUrl completion: (void (^)(NSError* error, NSString* accessCode))completion {
 
// Stash away the callback the SDK gives us
_getTokenCallback = completion;
 
  // Show the interactive OAuth Web View flow.
  // Once the OAuth flow completes or fails, invoke this callback.
  ...
 
// Return nil as there was no error
  return nil;
}

 

 

После инициализации, приложение может распознавать все устройства на графике устройства пользователя MSA, инициировав распознание с помощью CDRemoteSystemDiscoveryManager. Информация об обнаруженных устройствах создается через протокол CDRemoteSystemDiscoveryManagerDelegate. В примере Microsoft каждое обнаруженное устройство сохраняется в свойстве NSMutableArray.

 

// Create instance and pass ‘self’ as the delegate as it implements CDRemoteSystemDiscoveryManagerDelegate.
CDRemoteSystemDiscoveryManager* remoteSystemDiscoveryManager = [[CDRemoteSystemDiscoveryManager alloc] initWithDelegate:self];
 
// Start discovery.
[remoteSystemDiscoveryManager startDiscovery];
 
// CDRemoteSystemDiscoveryManagerDelegate implementation
- (void)remoteSystemDiscoveryManager:
            (CDRemoteSystemDiscoveryManager*)discoveryManager
                             didFind:(CDRemoteSystem*)remoteSystem {
  @synchronized(self) {
     [self.discoveredSystems addObject:remoteSystem];
      // Refresh UI based upon updated state in discoveredSystems e.g. populate table
   }
}
 
- (void)remoteSystemDiscoveryManager:
            (CDRemoteSystemDiscoveryManager*)discoveryManager
                           didUpdate:(CDRemoteSystem*)remoteSystem {
  NSString* id = remoteSystem.id;
 
// Loop through and update the Remote System instance if previously seen.
  @synchronized(self) {
    for (unsigned i = 0; i < self.discoveredSystems.count; i++) {
      CDRemoteSystem* currentRemoteSystem =
          [self.discoveredSystems objectAtIndex:i];
      NSString* currentId = currentRemoteSystem.id;
 
      if ([currentId isEqualToString:id]) {
        [self.discoveredSystems replaceObjectAtIndex:i withObject:remoteSystem];
        break;
      }
    }
 
       // Refresh UI based upon updated state in discoveredSystems e.g. populate table
  }
}

 

 

Теперь пользователь может выбрать устройство, на которое он хочет перенести проигрывание музыки, из списка обнаруженных устройств. Из выбранной CDRemoteSystem образец создания CDRemoteSystemConnectionRequest показан на диаграмме последовательности ниже. Используя CDRemoteLauncher, можно удаленно запускать приложение на выбранном устройстве, а также добавлять необходимую дополнительную контекстуальную информацию, такую как воспроизводимая в данный момент песня.

 

 

Здесь вы можете ознакомиться с тем, как дистанционно запустить http://www.bing.com  на вашем устройстве:

 

// Create a connection request using the CDRemoteSystem instance selected by the user
  CDRemoteSystemConnectionRequest* request =
       // Using the RemoteSystem above, [self.discoveredSystems addObject:remoteSystem];
      [[CDRemoteSystemConnectionRequest alloc] initWithRemoteSystem:system];
 
NSString* url = @”http://www.bing.com”;
 
  [CDRemoteLauncher
           launchUri:uri
           withRequest:request
           withCompletion:^(CDRemoteLauncherUriStatus status) {
            // Update UI on launch status
            }];

 

 

Как видите достаточно легко расширить поддержку кросс-устройств для iOS в своем приложении.

В Завершении

Project Rome разрушает барьеры, изменяя представления о том, что такое «приложение», и фокусируясь на пользователе независимо от того, где он находится или какое устроство использует. Теперь приложение не обязательно должно означать что-то, что привязано к одному устройству, вместо этого оно может быть чем-то, что существует между вашими устройствами и оптимизировано для нужного устройства в нужное время.

Чтобы узнать больше о Project Rome, ознакомьтесь с предоставленными ниже ссылками.

 

 

 



Exception: Object reference not set to an instance of an object.
Posted on 28. March 2017

Microsoft Store Services SDK запускают межстраничные баннера

Microsoft анонсировала поддержку межстраничных баннеров в Microsoft Store Services SDK. Межстраничные баннерные объявления стали одним из лучших запросов функциональных возможностей центра разработки для Windows, после того, как мы ввели поддержку межстраничных видеообъявлений.
Что такое межстраничные баннеры?
Межстраничные баннеры - очень популярный способ монетизации приложений и игр, поскольку они предлагают более высокие эффективные цены за тысячу показов, чем стандартные баннерные объявления. Они могут зарабатывать до 8-10 раз больше стандартных баннеров по следующим причинам:

  • Полное внимание пользователей: Полноэкранные объявления полностью привлекают внимание пользователей.
  • Большая площадь: Увеличенная в объеме площадь предоставляет рекламодателям больше возможностей показывать контент, который привлекает потенциальных клиентов.
  • Взаимодействие с пользователем: Межстраничные объявления требуют от пользователя перехода от рекламного объявления и, следовательно, его вовлеченность всегда высока.

Пример межстраничного объявления для мобильных устройств

 

Пример межстраничного объявления для планшетных/ ПК устройств

Этот новый формат объявлений доступен в последней версии Microsoft Store Services SDK для приложений универсальной платформы Windows (UWP) для Windows 10.
Если Вы еще не начали монетизировать свое приложение или игру с объявлениями с помощью Microsoft Store Services SDK, сейчас подходящее время начать. Cотрудники Microsoft подобрали несколько рекламных сетей, чтобы межстраничные баннерные объявления могли приносить хороший доход разработчикам, и также продолжают работу с большим количеством сетей, чтобы увеличить возможности заработка этого и других форматов рекламы. Чтобы узнать больше о вариантах добавления объявлений в Ваши приложения с помощью данного SDK, ознакомтесь с этой статьей.

Как начать?
Поскольку сейчас проходит бета-тестирование, пожалуйста, пишите по адресу aiacare@microsoft.com  ,чтобы отправить свое приложение или игру в бета-версию. После того, как будет созданный межстраничный рекламный блок, вы можете продолжить используя следующие шаги, чтобы включить его в свое приложение или игру.

Чтобы добавить межстраничное объявление в свою игру или приложение, используйте класс InterstitialAd из Microsoft Store Services SDK. Если вы уже знакомы с инструкциями по добавлению межстраничных видеообъявлений в игру или приложение, процесс добавления межстраничных баннерных объявлений будет практически идентичным. Единственное различие состоит в том, что при вызове метода RequestAd для извлечения объявления вы указываете тип AdType.Display для типа объявления (это новое значение перечисления в последней версии SDK).

 

using Microsoft.Advertising.WinRT.UI;
…
…
// declare the object and set your app parameters
InterstitialAd myInterstitialAd = null;
string myAppId = "d25517cb-12d4-4699-8bdc-52040c712cab";
string myAdUnitId = "11389925";
…
…
// instantiate the Ad
myInterstitialAd = new InterstitialAd();
myInterstitialAd.AdReady += MyInterstitialAd_AdReady;
myInterstitialAd.ErrorOccurred += MyInterstitialAd_ErrorOccurred;
myInterstitialAd.Completed += MyInterstitialAd_Completed;
myInterstitialAd.Cancelled += MyInterstitialAd_Cancelled;
…
…
// request for the ad a few seconds before you intend to display
myInterstitialAd.RequestAd(AdType.Display, myAppId, myAdUnitId);
…
…
// display the ad
if (InterstitialAdState.Ready == myInterstitialAd.State)
{
    myInterstitialAd.Show();
}
…
…

Подробные инструкции и примеры кода для добавления межстраничного баннера или межстраничного видеообъявления в игру или приложение, смотрите в этой статье.

Какие практические методы наиболее эффективны?

Из-за большего размера межстраничные баннеры требуют больше пропускной способности на пользовательских устройствах, чем стандартные баннерные объявления. Для этого необходимо использовать метод RequestAd для получения межстраничного баннерного объявления за 3-4 секунды до его отображения. Чтобы максимально использовать межстраничные объявления в ваших играх или приложениях, ознакомьтесь с руководящими принципами межстраничных объявлений.



Exception: Object reference not set to an instance of an object.
Posted on 15. November 2011

Windows Phone 7.5 MiniCamp

WP7MiniCamp

Компания Microsoft Ukraine продолжает нас радовать мероприятиями посвященными платформе Windows Phone 7. На очередном мероприятии, которое пройдет 24 ноября в офисе компании, речь пойдет о новых возможностях платформы Windows Phone Mango. Расписание мероприятия:

09:00–09:30 Регистрация

09:30–10:30 Создание приложений для Windows Phone 7.5, средства разработки.

Андрей Терехов, директор департамента стратегических технологий, Майкрософт Украина

10:30–11:30 Многозадачность в Windows Phone 7.5,

Сергей Лутай, Digital Cloud Technologies, Silverlight MVP, MCT, MCPD

11:30–12:00 Кофе, перерыв

12:00–13:00 Live Tiles и Push Notification
Александр Краковецкий, разработчик программного обеспечения MVP/ RD,
автор
wp7rocks.com

13:00–14:00 Разработка игр под Windows Phone 7.5.

Сергей Лутай, Digital Cloud Technologies, Silverlight MVP, MCT, MCPD

14:00–14:30 Обед

14:30–15:00 METRO. Дизайн под Windows Phone.

Никита Лукьянец, UX-евангелист, Майкрософт Украина

15:00–16:00 Интеграция с поиском, контактами, Picture Hub и др.

Сергей Байдачный, специалист по разработке программного обеспечения, Майкрософт Украина

Зарегистрироваться на мероприятие можно на официальной странице



Exception: Object reference not set to an instance of an object.
Posted on 1. September 2011

Доступен Silverlight 5 RC

silverlight5featuresСегодня стал доступен для загрузки Silverlight 5 Release Candidate версия. Текущая версия предназначена для разработчиков(go-live лицензия отсутствует), что бы у нас было время подготовить наши проекты к выходу финальной версии Silverlight 5, позже в этом году Smile. Используйте этот релиз, что бы подкорректировать соответствующие пространства имен и ссылки на сборки, а также добавить новые возможности.

В эту версию были включены следующие возможности:

  • событие DataContextChanged;
  • поддержка 64х ОС;
  • поддержка P/Invoke;
  • “векторная” печать;
  • доверительный режим внутри браузера;
  • PivotViewer компонент;
  • управление режимом энергосбережения – заключается в отключении заставки во время просмотра видео.

О всех нововведениях в RC версии читайте здесь

Кроме этого было сделано ряд изменений в размещении некоторых пространств имен XNA и файлов. Например некоторые вещи, касающиеся работы с 3D, находятся в разных сборках.

Скачать:



Exception: Object reference not set to an instance of an object.
Posted on 28. July 2011

SharePoint 2010 and Windows Phone 7 Training Kit

На сайте Microsoft Download Center доступен для загрузки SharePoint 2010 and Windows Phone 7 Training Kit. Он создан для разработчиков, которые знакомы с созданием приложений для Windows Phone 7 и SharePoint 2010. Курс нацелен на создание приложений, которые используют обе платформы. Если вы новичок в разработке Windows Phone 7 приложений, то рекомендую для начала пройти курс Windows Phone 7 Training Kit. Новичкам в SharePoint 2010 - SharePoint 2010 Developer Training Kit.

Training Kit состоит из нескольких частей:

  • Introduction to Windows Phone 7 Development
  • Setting Up A SharePoint and Windows Phone 7 Development Environment
  • SharePoint 2010 Mobile Web Development
  • Integrating SharePoint Data in Windows Phone 7 Applications
  • Advanced SharePoint Data Access in Windows Phone 7 Applications
  • Security With SharePoint And Windows Phone 7 Applications
  • Integrating Push Notifications with SharePoint Data in Windows Phone 7 Applications
  • Integrating SharePoint 2010 and Windows Azure
  • Deploying Windows Phone 7 Applications
  • SharePoint and Windows Phone 7 Tips and Best Practices
Каждая часть курса содержит презентацию и набор лабораторных работ.

Exception: Object reference not set to an instance of an object.
Posted on 18. May 2011

Интеграционный пакет Silverlight для Microsoft Enterprise Library 5.0

PNP_Silverlight

Команда P&P выпустила Silverlight Intergartion Pack для Microsoft Enterprise Library. Данная версия решения содержит компоненты, содержащие рекомендованные практики содействующие обеспечению согласованности, расширения, легкости использования, интеграции. А также руководство по использованию. Кроме этого, решение предназначено для тех, кто хочет перенести свое готовое бизнес решение, использующее Enterprise Library, на Silverlight.

Текущая версия включает в себя:

· Блок кеширования:

    • Кеширование в памяти;
    • Кеширование в изолиронном хранилище;
    • Политики очистки и истечения срока действия;
    • Уведомление о чистке кеша.

· Блок верификации:

  • Много уровневая комплексная валидация;
  • Правила валидации, основанные на атрибутах;
  • Конфигурационная система правил валидации;
  • Простоя валидация между несколькими полями;
  • Многослойная валидация(через WCF RIA Services);
  • Поддержка установки множественных правил;
  • И др.

· Блок логирования:

  • Слушатель трассировки уведомлений;
  • Слушатель трассировки изолированного хранилища;
  • Фильтры логирования;
  • Трассировка;
  • Мощная настройка встроенных валидаторов.

· Блок обработки ошибок:

Простота настройки;

  • Обработчик логирования;
  • Обработчик замены;
  • Обработчик переносов.

· Unity блок – контейнер dependency injection

· Блок политики инъекций

  • Обработчик валидации;
  • Обработчик ошибок
  • Обработчик логирования.

· StockTrader V2 (на данный момент не релиз версия)

clip_image002

Детальнее читайте в блоге Grigori Melnik

Скачать Silverlight Integration Pack for Microsoft Enterprise Library 5.0



Exception: Object reference not set to an instance of an object.
Posted on 13. April 2011

Доступен Silverlight 5 Beta

imageКак и обещали, получаем первую публичную версию Silverlight 5 Beta. Пока еще не все анонсированные возможности реализованы, но пробовать уже сделаное и оставить свой отзыв можно. И так, из реализованного в текущей версии:

  • улучшения в связывании данных(отладка, связывание в стилях, связывание по типу, выбор шаблона в зависимости от типа данных и др.);
  • возможности работы с 3D графикой;
  • счетчик кликов в обработчиках xxxMouseUp и xxxMouseDown;
  • SoundEffect;
  • Улучшения в отображении текста и работе с ним;
  • изменение скорости воспроизведения медиа контента;
  • возможность создания пользовательской разметки;
  • декодирование видео H.264 на ресурсах видео карты;
  • полная поддержка клавиатуры в полноэкранном режиме;
  • ряд улучшение в оптимизации работы приложений;
  • возможность использование виндовс окон при работе в доверительном режиме;
  • использование возможностей доверительного режима в приложении в браузере(через конфигурацию групповых политик);
  • улучшения в сетевом взаимодействии с сервером;

Более детально об использовании новых возможностей читайте в следующих постах.

Другие ресурсы для загрузки:



Exception: Object reference not set to an instance of an object.
Posted on 6. April 2011

Материалы конференции “Дни разработчиков–Весна 2011”

Как обещал – выкладываю материалы мероприятия.















Плюс, немного фотографий Севастополя (только здесь у меня было свободное время Smile )

Дни разработчика 2011 Весна

Дни разработчика 2011 Весна

Дни разработчика 2011 Весна

Дни разработчика 2011 Весна

Дни разработчика 2011 Весна

Дни разработчика 2011 Весна

Дни разработчика 2011 Весна



Exception: Object reference not set to an instance of an object.
Posted on 16. March 2011

Online University: Silverlight & Windows Phone 7

Silverlight_WindowsPhone

В апреле месяце при поддержке Департамента Стратегических Решений компании Microsoft Украина я проведу онлайн семинары по технологиям Silverlight и Windows Phone 7. Если вам интересно узнать о каких-то особенностях указанных технологий – пишите мне на почту.

Спешите, времени осталось не много.



Exception: Object reference not set to an instance of an object.
Posted on 16. February 2011

Интеграционный пакет Silverlight

Григорий Мельник в своей твиттер ленте сообщил об обновлении статуса задач по проекту Entity Library, точнее его части для Silverlight приложений:

@gmelnik

Ранее команда EL собирала пожелания разработчиков для реализация дополнений к Silverlight приложениям в составе EL, о чем Григорий анонсировал ранее. Сейчас же можно проголосовать за возможность, которая больше всего нужна вам или оставить свое пожелание. Тем самым мы с вами получим продукт для нас.

What do you want to see in Enterprise Library for Silverlight?

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



Exception: Object reference not set to an instance of an object.