Статьи

Доступ к роуминговым данным в облаке

Следующая статья была написана и внесена в блог Катриной Лион-Смит, старшим руководителем по публикации контента в Microsoft. 

Роуминг данных в облаке

Вы хотите создать приложение, которое может хранить данные в облаке?

Хотите ли вы получить доступ к этим данным с любого устройства, на котором работает ваше приложение?

Хотите обновить живые плитки на устройствах с вашим приложением?

Тогда читайте дальше …

Допустим, вы хотите создать приложение для заметок, которое позволит вам добавлять заметки на настольном компьютере Windows 8. Затем эта заметка отправляется на живую плитку на вашем телефоне с Windows 8 и Windows Surface, так что вы просто не можете забыть или проигнорировать ее! Службы Windows Azure Mobile Services позволяют легко собрать приложения для Магазина Windows и телефона Windows 8, которые могут это сделать.

Вот некоторые вещи, которые вы должны знать, прежде чем начать.

Счета

Вам нужно три аккаунта. Три? Я знаю! Но просто зарегистрироваться, если у вас их еще нет.

  1. Вам нужна учетная запись Microsoft
  2. Для доступа к облаку: учетная запись Windows Azure с включенными мобильными службами Windows Azure
  3. Чтобы зарегистрировать свои приложения: учетная запись разработчика

Вы будете использовать существующие учебные пособия , в которых показано, как создать мобильную службу Azure и собрать приложение для доступа к данным роуминга.

Создание приложений для мобильных служб Windows Azure

Шаг 1. Создайте мобильное приложение

Используйте это руководство для создания мобильной службы Azure и приложения, которое может получить доступ к этой службе. Из этого туториала Вы узнаете, как сделать это для приложения Магазина Windows или приложения для телефона Windows 8. Он создает список приложений для вас. Затем вы можете изменить это приложение для работы с данными, которые необходимо хранить в таблицах SQL Azure для мобильной службы Azure. Если вы используете учебное пособие, добавляются правильные ссылки, чтобы вы могли быстро научиться работать с мобильной службой Azure.

Шаг 2: аутентификация пользователя

Используйте это руководство, чтобы узнать, как аутентифицировать пользователя с помощью мобильных служб Azure. Поддерживаются следующие поставщики удостоверений:

  1. Учетная запись Microsoft
  2. Логин в фейсбук
  3. Логин в твиттере
  4. Логин гугл

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

Примечание. Когда вы настраиваете телефонное приложение Windows 8 и получаете его идентификатор клиента, вы должны указать, что вы настраиваете мобильное приложение. Мобильные приложения используют другой поток аутентификации OAuth 2.0. Подробности здесь .

Шаг 3: Только я могу видеть свои данные

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

Шаг 4. Обновите живые плитки для вашего приложения.

Если вы добавляете элемент «Сделать» с помощью приложения, вы хотите, чтобы последний элемент «Делать» отправлялся на активную плитку для любого устройства.

Для этого используйте push-уведомления в мобильной службе Azure. Вы должны узнать URI канала для устройства, на котором работает ваше приложение. Затем добавьте логику, чтобы уведомить пользователя о сценариях на сервере. Поскольку это сценарий на стороне сервера, он используется любым приложением, которое обращается к таблице SQL Azure.

Вы должны следовать этим двум учебникам:

  1. Настройте мобильную службу Azure для отправки push-уведомлений
  2. Добавить таблицу для хранения каналов и идентификаторов пользователей для отправки push-уведомлений

Теперь ваше приложение отправляет уведомления всем каналам в таблице каналов. В реальном приложении вы можете отправлять уведомления только тем каналам, которые связаны с пользователем, который запускает ваше приложение.

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

Шаг 5: Обновите живые плитки для определенного пользователя

Существуют различные push-уведомления для приложений Магазина Windows и приложений для Windows 8 Phone. Вы можете решить, какой из них лучше для вашего приложения. Чтобы отправлять уведомления на каналы, связанные с конкретным пользователем, необходимо обновить серверные сценарии с портала управления Windows Azure.

1. Обновите серверный скрипт для вставки таблицы каналов.

Сначала необходимо обновить скрипт на стороне сервера, чтобы с каждым канальным uri был связан только один пользователь.

Этот скрипт добавляет идентификатор пользователя в таблицу каналов. Он проверяет, существует ли существующий канал для URI. Если есть, он проверяет, является ли идентификатор пользователя текущим идентификатором пользователя. Если нет, он обновляет запись канала для этого URI с текущим идентификатором пользователя.

Если не существует никакого существующего канала, он добавляет запись в таблицу для этого URI и идентификатора пользователя.

function insert(item, user, request) { 
    

    item.userId = user.userId;

    var channelTable = tables.getTable('Channel');
    channelTable
        .where({ uri: item.uri})
        .read({ success: insertChannelorUpdate});

    function insertChannelorUpdate(existingChannels) {
        if (existingChannels.length > 0) {
            if (existingChannels[0].userId == user.userId)
                {request.respond(200, existingChannels[0]);}
            else
                { var channelItem = { id: existingChannels[0].id,     
                            uri: existingChannels[0].uri,
                            userId: user.userId };   
                    channelTable.update(channelItem);
                }
            }
          else { request.execute(); }     
         }
     }                                             

Затем вам нужно обновить серверный скрипт, который вставляет данные в вашу таблицу, чтобы вы могли отправить push-уведомление, когда это произойдет.

2. Обновите серверный скрипт для вставки в вашу таблицу данных.

Этот сценарий отправляет push-уведомления только тем каналам, которые подключены к этому пользователю, когда в таблицу данных добавлена ​​запись. Например, вы добавляете элемент «Pick up milk», и текст «Pick up milk» помещается на активную плитку для любого устройства, которое вошло в приложение как вы.

Этот сценарий выводит на экран как телефон Windows 8, так и уведомление приложения магазина Windows, чтобы продемонстрировать и то, и другое.

function insert(item, user, request) { 
    

    item.userId = user.userId;

    request.execute({
        success: function() {
            request.respond();
            sendNotifications(); }
         });

            function sendNotifications() {
                var channelTable = tables.getTable('Channel');
                channelTable.where({userId: user.userId}).read({
                    success: function(channels) {
                        channels.forEach(function(channel) {     
                            push.wns.sendTileSquareText02(channel.uri, {
                                    text2: item.text },   
                            {
                        success: function(pushResponse) {
                            console.log("Sent push windows store:", pushResponse);
                    }     
                });
                push.mpns.sendFlipTile(channel.uri, {                                   
                    title: item.text
                },{
                        success: function(pushResponse) {
                            console.log("Sent push windows 8 phone:", pushResponse); }
                    });
                    }
                );
            }
          });
        }
    }

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