Trabalhe com o servidor de backend .NET SDK para aplicações móveis Azure

Este tópico mostra-lhe como utilizar o servidor de backend SDK .NET nos cenários de Serviço de Aplicações do Azure Mobile Apps. O Azure Mobile Apps SDK ajuda-o a trabalhar com clientes móveis a partir da sua aplicação ASP.NET.

Dica

O servidor .NET SDK para aplicações móveis Azure está open source no GitHub. O repositório contém todo o código fonte, incluindo todo o conjunto de testes SDK do servidor e alguns projetos de amostragem.

Documentação de referência

A documentação de referência para o servidor SDK está localizada aqui: Azure Mobile Apps .NET Reference.

Como: Criar um backend .NET Mobile App

Se estiver a iniciar um novo projeto, pode criar uma aplicação Serviço de Aplicações utilizando o portal do Azure ou o Visual Studio. Pode executar a aplicação Serviço de Aplicações localmente ou publicar o projeto na sua aplicação móvel de Serviço de Aplicações baseada na nuvem.

Se estiver a adicionar capacidades móveis a um projeto existente, consulte o Download e inicialize a secção SDK .

Crie um backend .NET utilizando o portal do Azure

Para criar um backend móvel Serviço de Aplicações, siga o tutorial quickstart ou siga estes passos:

  1. Inicie sessão no portal do Azure.

  2. Selecione +NEW>Web + Mobile>Mobile App e, em seguida, forneça um nome para as suas Aplicações Móveis de volta.

  3. Para o Grupo de Recursos, selecione um grupo de recursos existente ou crie um novo (utilizando o mesmo nome que a sua aplicação).

  4. Para Serviço de Aplicações plano, o plano padrão (no nível Standard) é selecionado. Também pode selecionar um plano diferente ou criar um novo.

    As definições do plano Serviço de Aplicações determinam a localização, funcionalidades, custos e recursos de computação associados à sua aplicação. Para mais sobre Serviço de Aplicações planos e como criar um novo plano num nível de preços diferente e na sua localização desejada, consulte Serviço de Aplicações do Azure planos em profundidade.

  5. Selecione Criar. Este passo cria o back end das Aplicações Móveis.

  6. No painel de Definições para as novas Aplicações Móveis, selecione Iniciar rapidamente> a plataforma > de aplicações do cliente Ligue uma base de dados.

    Seleções para a ligação de uma base de dados

  7. No painel de ligação de dados Adicionar, selecione Base de Dados SQL>Create uma nova base de dados. Introduza o nome da base de dados, escolha um nível de preços e, em seguida, selecione Server. Pode reutilizar esta nova base de dados. Se já tiver uma base de dados na mesma localização, pode escolher Utilizar uma base de dados existente. Não recomendamos o uso de uma base de dados num local diferente, devido aos custos de largura de banda e à maior latência.

    Seleção de uma base de dados

  8. No painel de servidor Novo , insira um nome de servidor único na caixa de nomes do Servidor , forneça um login e uma palavra-passe, selecione Permitir serviços Azure para aceder ao servidor e selecione OK. Este passo cria a nova base de dados.

  9. Voltar ao painel de ligação de dados Adicionar , selecionar a cadeia de ligação, introduzir os valores de login e palavra-passe para a sua base de dados e selecionar OK.

    Aguarde alguns minutos para que a base de dados seja implantada com sucesso antes de prosseguir.

De volta à lâmina Get start , em Create a table API, escolha C# como o seu idioma Backend. Clique em Baixar, extraia os ficheiros do projeto comprimido para o computador local e abra a solução no Visual Studio.

Criar um backend .NET utilizando o Visual Studio 2017

Instale a carga de trabalho do Azure através do Instalador de Estúdio Visual para publicar no projeto Azure Mobile Apps a partir do Visual Studio. Depois de ter instalado o SDK, crie uma aplicação ASP.NET utilizando os seguintes passos:

  1. Abra o diálogo do Novo Projeto (do File>New>Project...).
  2. Expanda o Visual C# e selecione Web.
  3. Selecione ASP.NET Aplicação Web (.NET Framework).
  4. Preencha o nome do projeto. Em seguida, clique em OK.
  5. Selecione Azure Mobile App a partir da lista de modelos.
  6. Clique em OK para criar a solução.
  7. Clique com o direito no projeto no Explorador de Soluções e escolha Publicar..., em seguida, escolha Serviço de Aplicações como o alvo de publicação.
  8. Siga as instruções para autenticar e escolha um Serviço de Aplicações do Azure novo ou existente para publicar.

Criar um backend .NET utilizando o Visual Studio 2015

Instale o Azure SDK para .NET (versão 2.9.0 ou posterior) para criar um projeto Azure Mobile Apps em Visual Studio. Depois de ter instalado o SDK, crie uma aplicação ASP.NET utilizando os seguintes passos:

  1. Abra o diálogo do Novo Projeto (do File>New>Project...).
  2. Expandir modelos>visual C#e selecionar Web.
  3. Selecione Aplicação Web ASP.NET.
  4. Preencha o nome do projeto. Em seguida, clique em OK.
  5. Sob ASP.NET modelos 4.5.2, selecione Azure Mobile App. Consulte o Anfitrião na nuvem para criar um backend móvel na nuvem ao qual pode publicar este projeto.
  6. Clique em OK.

Como: Descarregar e rubricar o SDK

O SDK está disponível no NuGet.org. Este pacote inclui a funcionalidade base necessária para começar a usar o SDK. Para inicializar o SDK, é necessário executar ações no objeto HttpConfiguration .

Instalar o SDK

Para instalar o SDK, clique com o botão direito no projeto do servidor no Estúdio Visual, selecione Gerir pacotes NuGet, procurar o pacote Microsoft.Azure.Mobile.Server e, em seguida, clicar em Instalar.

Inicializar o projeto do servidor

Um projeto de servidor de backend .NET é inicializado semelhante a outros projetos de ASP.NET, incluindo uma classe de startups OWIN. Certifique-se de que já fez referência ao pacote Microsoft.Owin.Host.SystemWebNuGet . Para adicionar esta aula no Visual Studio, clique com o botão direito no seu projeto de servidor e selecione Add>New Item, em seguida, Web>General>OWIN Startup class. Uma classe é gerada com o seguinte atributo:

[assembly: OwinStartup(typeof(YourServiceName.YourStartupClassName))]

No método da Configuration() sua classe de startup OWIN, utilize um objeto HttpConfiguration para configurar o ambiente de Aplicações Móveis Azure. O exemplo a seguir inicializa o projeto do servidor sem funcionalidades adicionais:

// in OWIN startup class
public void Configuration(IAppBuilder app)
{
    HttpConfiguration config = new HttpConfiguration();

    new MobileAppConfiguration()
        // no added features
        .ApplyTo(config);

    app.UseWebApi(config);
}

Para ativar funcionalidades individuais, deve ligar para os métodos de extensão no objeto MobileAppConfiguration antes de ligar para o ApplyTo. Por exemplo, o seguinte código adiciona as rotas predefinidos a todos os controladores API que tenham o atributo [MobileAppController] durante a inicialização:

new MobileAppConfiguration()
    .MapApiControllers()
    .ApplyTo(config);

O arranque rápido do servidor a partir do portal do Azure chama UseDefaultConfiguration(). Este equivalente à seguinte configuração:

    new MobileAppConfiguration()
        .AddMobileAppHomeController()             // from the Home package
        .MapApiControllers()
        .AddTables(                               // from the Tables package
            new MobileAppTableConfiguration()
                .MapTableControllers()
                .AddEntityFramework()             // from the Entity package
            )
        .AddPushNotifications()                   // from the Notifications package
        .MapLegacyCrossDomainController()         // from the CrossDomain package
        .ApplyTo(config);

Os métodos de extensão utilizados são:

  • AddMobileAppHomeController() fornece a página inicial padrão do Azure Mobile Apps.
  • MapApiControllers() fornece capacidades API personalizadas para controladores WebAPI decorados com o [MobileAppController] atributo.
  • AddTables() fornece um mapeamento dos /tables pontos finais para controladores de mesa.
  • AddTablesWithEntityFramework() é uma mão curta para mapear os /tables pontos finais usando controladores baseados em Entity Framework.
  • AddPushNotifications() fornece um método simples de registo de dispositivos para centros de notificação.
  • MapLegacyCrossDomainController() fornece cabeçalhos CORS padrão para o desenvolvimento local.

Extensões SDK

Os seguintes pacotes de extensão baseados em NuGet fornecem várias funcionalidades móveis que podem ser usadas pela sua aplicação. Ativa as extensões durante a inicialização utilizando o objeto MobileAppConfiguration .

  • Microsoft.Azure.Mobile.Server.Quickstart Suporta a configuração básica de Aplicações Móveis. Adicionado à configuração chamando o método de extensão UseDefaultConfiguration durante a inicialização. Esta extensão inclui seguintes extensões: Notificações, Autenticação, Entidade, Tabelas, Domínio Transversal e Pacotes Home. Este pacote é utilizado pelo Mobile Apps Quickstart disponível no portal do Azure.
  • Microsoft.Azure.Mobile.Server.Home Implementa o padrão esta aplicação móvel está em funcionamento página para a raiz do site. Adicione à configuração chamando o método de extensão AddMobileAppHomeController .
  • Microsoft.Azure.Mobile.Server.Tables inclui aulas para trabalhar com dados e configurar o pipeline de dados. Adicione à configuração chamando o método de extensão AddTables .
  • Microsoft.Azure.Mobile.Server.Entity permite ao Quadro de Entidades aceder aos dados no Base de Dados SQL. Adicione à configuração chamando o método de extensão AddTablesWithEntityFramework .
  • Microsoft.Azure.Mobile.Server.Authentication Enables authentication and sets-up the OWIN middleware used to valided tokens. Adicione à configuração chamando o AddAppServiceAuthentication e iAppBuilder. Use métodos de extensão de extensão de UtilidadeAppService.
  • Microsoft.Azure.Mobile.Server.Notifications Enables push notifications and define um ponto final de registo push. Adicione à configuração chamando o método de extensão AddPushNotifications .
  • Microsoft.Azure.Mobile.Server.CrossDomain Cria um controlador que serve dados para navegadores web legados a partir da sua Aplicação Móvel. Adicione à configuração chamando o método de extensão MapLegacyCrossDomainController .
  • Microsoft.Azure.Mobile.Server.Login fornece o método AppServiceLoginHandler.CreateToken() que é um método estático usado durante cenários de autenticação personalizada.

Como: Publicar o projeto do servidor

Esta secção mostra-lhe como publicar o seu projeto de backend .NET da Visual Studio. Também pode implementar o seu projeto backend usando Git ou qualquer outro método disponível lá.

  1. No Visual Studio, reconstrua o projeto para restaurar os pacotes NuGet.

  2. Em Explorador de Soluções, clique com o botão direito no projeto, clique em Publicar. A primeira vez que publicas, tens de definir um perfil de publicação. Quando já tiver um perfil definido, pode selecioná-lo e clicar em Publicar.

  3. Se for solicitado para selecionar um alvo de publicação, clique em Microsoft Serviço de Aplicações do Azure>Next, então (se necessário) iniciar sing-in com as suas credenciais Azure. Visual Studio descarrega e armazena de forma segura as suas definições de publicação diretamente do Azure.

  4. Escolha a sua Subscrição, selecione o Tipo de Recurso a partir de View, expanda a Aplicação Móvel e clique no backend da aplicação móvel e, em seguida, clique em OK.

  5. Verifique as informações de perfil de publicação e clique em Publicar.

    Quando o seu backend mobile app tiver sido publicado com sucesso, vê uma página de aterragem indicando sucesso.

Como: Definir um controlador de mesa

Defina um Controlador de Tabela para expor uma tabela SQL a clientes móveis. Configurar um controlador de mesa requer três passos:

  1. Criar uma classe de Objeto de Transferência de Dados (DTO).
  2. Configure uma referência de tabela na classe Mobile DbContext.
  3. Criar um controlador de mesa.

Um Objeto de Transferência de Dados (DTO) é um objeto C# simples que herda de EntityData. Por exemplo:

public class TodoItem : EntityData
{
    public string Text { get; set; }
    public bool Complete {get; set;}
}

O DTO é utilizado para definir a tabela dentro da base de dados SQL. Para criar a entrada na base de dados, adicione uma DbSet<> propriedade ao DbContext que está a utilizar. No modelo de projeto padrão para aplicações móveis Azure, o DbContext é chamado Models\MobileServiceContext.cs:

public class MobileServiceContext : DbContext
{
    private const string connectionStringName = "Name=MS_TableConnectionString";

    public MobileServiceContext() : base(connectionStringName)
    {

    }

    public DbSet<TodoItem> TodoItems { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Add(
            new AttributeToColumnAnnotationConvention<TableColumnAttribute, string>(
                "ServiceColumnTable", (property, attributes) => attributes.Single().ColumnType.ToString()));
    }
}

Se tiver o Azure SDK instalado, pode agora criar um controlador de tabela de modelo da seguinte forma:

  1. Clique com o botão direito na pasta Controladores e selecione Add>Controller....
  2. Selecione a opção Azure Mobile Apps Table Controller e, em seguida, clique em Adicionar.
  3. No diálogo do controlador de adicionar :
    • No dropdown de classe Modelo , selecione o seu novo DTO.
    • No dropdown DbContext , selecione a classe DbContext de serviço móvel.
    • O nome controlador é criado para si.
  4. Clique em Adicionar.

O projeto do servidor quickstart contém um exemplo para um simples TodoItemController.

Como: Ajustar o tamanho da paging da mesa

Por padrão, a Azure Mobile Apps devolve 50 registos por pedido. A paging garante que o cliente não amarra a sua linha de UI nem o servidor por muito tempo, garantindo uma boa experiência do utilizador. Para alterar o tamanho da paging da tabela, aumente o lado do servidor "tamanho de consulta permitido" e o tamanho da página do lado do cliente O lado do servidor "tamanho de consulta permitido" é ajustado usando o EnableQuery atributo:

[EnableQuery(PageSize = 500)]

Certifique-se de que o PageSize é igual ou maior do que o tamanho solicitado pelo cliente. Consulte a documentação específica do cliente HOWTO para obter detalhes sobre a alteração do tamanho da página do cliente.

Como: Definir um controlador API personalizado

O controlador API personalizado fornece a funcionalidade mais básica ao seu backend da Aplicação Móvel expondo um ponto final. Pode registar um controlador API específico para dispositivos móveis utilizando o atributo [MobileAppController]. O MobileAppController atributo regista a rota, configura o serializer de Aplicações Móveis JSON e liga a verificação da versão do cliente.

  1. No Estúdio Visual, clique com o botão direito na pasta Controladores e, em seguida, clique em Adicionar>Controlador, selecione Web API 2 Controller — Vazio e clique em Adicionar.

  2. Forneça um nome controlador, como CustomController, e clique em Adicionar.

  3. No novo ficheiro da classe do controlador, adicione a seguinte declaração de utilização:

     using Microsoft.Azure.Mobile.Server.Config;
    
  4. Aplicar o atributo [MobileAppController] à definição de classe do controlador API, como no exemplo seguinte:

     [MobileAppController]
     public class CustomController : ApiController
     {
           //...
     }
    
  5. No ficheiro App_Start/Startup.MobileApp.cs, adicione uma chamada ao método de extensão MapApiControllers , como no seguinte exemplo:

     new MobileAppConfiguration()
         .MapApiControllers()
         .ApplyTo(config);
    

Também pode utilizar o UseDefaultConfiguration() método de extensão em vez de MapApiControllers(). Qualquer controlador que não tenha MobileAppControllerAttribute aplicado ainda pode ser acedido pelos clientes, mas pode não ser corretamente consumido pelos clientes que usam qualquer cliente da Mobile App SDK.

Como: Trabalhar com autenticação

A Azure Mobile Apps utiliza Serviço de Aplicações Autenticação / Autorização para proteger o seu backend móvel. Esta secção mostra-lhe como executar as seguintes tarefas relacionadas com a autenticação no seu projeto de servidor de backend .NET:

Como: Adicionar autenticação a um projeto de servidor

Pode adicionar autenticação ao seu projeto de servidor, alargando o objeto MobileAppConfiguration e configurando o middleware OWIN. Quando instalar o pacote Microsoft.Azure.Mobile.Server.Quickstart e ligar para o método de extensão UseDefaultConfiguration , pode saltar para o passo 3.

  1. No Visual Studio, instale o pacote Microsoft.Azure.Mobile.Server.Authentication .

  2. No ficheiro de projeto .cs Arranque, adicione a seguinte linha de código no início do método de Configuração :

     app.UseAppServiceAuthentication(config);
    

    Este componente de middleware OWIN valida fichas emitidas pelo gateway Serviço de Aplicações associado.

  3. Adicione o [Authorize] atributo a qualquer controlador ou método que exija autenticação.

Para saber como autenticar os clientes no backend de Aplicações Móveis, consulte adicionar autenticação à sua aplicação.

Como: Utilize a autenticação personalizada para a sua aplicação

Importante

Para ativar a autenticação personalizada, tem primeiro de ativar Serviço de Aplicações Autenticação sem selecionar um fornecedor para o seu Serviço de Aplicações no portal do Azure. Isto permitirá que a variável ambiente WEBSITE_AUTH_SIGNING_KEY quando hospedada.

Se não pretender utilizar um dos Serviço de Aplicações fornecedores de Autenticação/Autorização, pode implementar o seu próprio sistema de login. Instale o pacote Microsoft.Azure.Mobile.Server.Login para ajudar na geração de token de autenticação. Forneça o seu próprio código para validar as credenciais do utilizador. Por exemplo, pode verificar se há palavras-passe salgadas e hashed numa base de dados. No exemplo a seguir, o isValidAssertion() método (definido noutros locais) é responsável por estes controlos.

A autenticação personalizada é exposta através da criação de um ApiController e expondo e login açõesregister. O cliente deve utilizar um UI personalizado para recolher a informação do utilizador. A informação é então submetida à API com uma chamada padrão HTTP POST. Uma vez que o servidor valida a afirmação, um token é emitido usando o AppServiceLoginHandler.CreateToken() método. O ApiController não deve utilizar o [MobileAppController] atributo.

Uma ação exemplo login :

    public IHttpActionResult Post([FromBody] JObject assertion)
    {
        if (isValidAssertion(assertion)) // user-defined function, checks against a database
        {
            JwtSecurityToken token = AppServiceLoginHandler.CreateToken(new Claim[] { new Claim(JwtRegisteredClaimNames.Sub, assertion["username"]) },
                mySigningKey,
                myAppURL,
                myAppURL,
                TimeSpan.FromHours(24) );
            return Ok(new LoginResult()
            {
                AuthenticationToken = token.RawData,
                User = new LoginResultUser() { UserId = userName.ToString() }
            });
        }
        else // user assertion was not valid
        {
            return this.Request.CreateUnauthorizedResponse();
        }
    }

No exemplo anterior, o LoginResult e o LoginResultUser são objetos serializáveis expondo as propriedades necessárias. O cliente espera que as respostas de login sejam devolvidas como objetos JSON do formulário:

    {
        "authenticationToken": "<token>",
        "user": {
            "userId": "<userId>"
        }
    }

O AppServiceLoginHandler.CreateToken() método inclui uma audiência e um parâmetro emitente . Ambos os parâmetros são definidos para o URL da raiz da sua aplicação, utilizando o esquema HTTPS. Da mesma forma, deverá definir o SecretKey como o valor da chave de assinatura da sua aplicação. Não distribua a chave de assinatura num cliente, pois pode ser usada para cunhar chaves e personificar os utilizadores. Pode obter a chave de assinatura enquanto estiver hospedada em Serviço de Aplicações, referindo a variável ambiente WEBSITE_AUTH_SIGNING_KEY. Se necessário num contexto local de depuração, siga as instruções na secção Local de depuração com secção de autenticação para recuperar a chave e armazená-la como configuração de aplicação.

O token emitido também pode incluir outras reclamações e uma data de validade. Minimamente, o token emitido deve incluir uma reclamação (sub).

Pode suportar o método padrão do cliente loginAsync() sobrecarregando a rota de autenticação. Se o cliente ligar client.loginAsync('custom'); para fazer login, a sua rota deve ser /.auth/login/custom. Pode definir a rota para o controlador de autenticação personalizado utilizando MapHttpRoute():

config.Routes.MapHttpRoute("custom", ".auth/login/custom", new { controller = "CustomAuth" });

Dica

A utilização da loginAsync() abordagem garante que o token de autenticação está ligado a todas as chamadas subsequentes ao serviço.

Como: Recuperar informações autenticadas do utilizador

Quando um utilizador é autenticado por Serviço de Aplicações, pode aceder ao ID do utilizador atribuído e a outras informações no seu código de backend .NET. A informação do utilizador pode ser utilizada para tomar decisões de autorização no backend. O seguinte código obtém o ID do utilizador associado a um pedido:

// Get the SID of the current user.
var claimsPrincipal = this.User as ClaimsPrincipal;
string sid = claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier).Value;

O SID é derivado do ID do utilizador específico do fornecedor e é estático para um determinado utilizador e fornecedor de login. O SID é nulo para fichas de autenticação inválida.

Serviço de Aplicações também permite solicitar reclamações específicas do seu fornecedor de login. Cada fornecedor de identidade pode fornecer mais informações usando o fornecedor de identidade SDK. Por exemplo, pode utilizar o Graph API do Facebook para obter informações sobre amigos. Pode especificar reclamações solicitadas na lâmina do fornecedor no portal do Azure. Algumas reclamações requerem configuração adicional com o fornecedor de identidade.

O seguinte código chama o método de extensão GetAppServiceIdentityAsync para obter as credenciais de login, que incluem o token de acesso necessário para fazer pedidos contra o Facebook Graph API:

// Get the credentials for the logged-in user.
var credentials =
    await this.User
    .GetAppServiceIdentityAsync<FacebookCredentials>(this.Request);

if (credentials.Provider == "Facebook")
{
    // Create a query string with the Facebook access token.
    var fbRequestUrl = "https://graph.facebook.com/me/feed?access_token="
        + credentials.AccessToken;

    // Create an HttpClient request.
    var client = new System.Net.Http.HttpClient();

    // Request the current user info from Facebook.
    var resp = await client.GetAsync(fbRequestUrl);
    resp.EnsureSuccessStatusCode();

    // Do something here with the Facebook user information.
    var fbInfo = await resp.Content.ReadAsStringAsync();
}

Adicione uma declaração de utilização para System.Security.Principal fornecer o método de extensão GetAppServiceIdentityAsync .

Como: Restringir o acesso de dados a utilizadores autorizados

Na secção anterior, mostrámos como recuperar o ID do utilizador de um utilizador autenticado. Pode restringir o acesso a dados e outros recursos com base neste valor. Por exemplo, adicionar uma coluna userId às tabelas e filtrar os resultados da consulta pelo ID do utilizador é uma forma simples de limitar os dados devolvidos apenas aos utilizadores autorizados. O código que se segue retorna as linhas de dados apenas quando o SID corresponde ao valor na coluna UserId na tabela TodoItem:

// Get the SID of the current user.
var claimsPrincipal = this.User as ClaimsPrincipal;
string sid = claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier).Value;

// Only return data rows that belong to the current user.
return Query().Where(t => t.UserId == sid);

O Query() método devolve um IQueryable que pode ser manipulado pelo LINQ para manusear a filtragem.

Como: Adicionar notificações push a um projeto de servidor

Adicione notificações push ao seu projeto de servidor, alargando o objeto MobileAppConfiguration e criando um cliente Desemagravamento.

  1. No Estúdio Visual, clique com o botão direito no projeto do servidor e clique em Gerir Pacotes NuGet, procurar Microsoft.Azure.Mobile.Server.Notificationse, em seguida, clicar em Instalar.

  2. Repita este passo para instalar o Microsoft.Azure.NotificationHubs pacote, que inclui a biblioteca de clientes Do Notification Hubs.

  3. Em App_Start/Startup.MobileApp.cs e adicione uma chamada ao método de extensão AddPushNotifications durante a inicialização:

     new MobileAppConfiguration()
         // other features...
         .AddPushNotifications()
         .ApplyTo(config);
    
  4. Adicione o seguinte código que cria um cliente De Aviso Hubs:

     // Get the settings for the server project.
     HttpConfiguration config = this.Configuration;
     MobileAppSettingsDictionary settings =
         config.GetMobileAppSettingsProvider().GetMobileAppSettings();
    
     // Get the Notification Hubs credentials for the Mobile App.
     string notificationHubName = settings.NotificationHubName;
     string notificationHubConnection = settings
         .Connections[MobileAppSettingsKeys.NotificationHubConnectionString].ConnectionString;
    
     // Create a new Notification Hub client.
     NotificationHubClient hub = NotificationHubClient
         .CreateClientFromConnectionString(notificationHubConnection, notificationHubName);
    

Pode agora utilizar o cliente Do Centro de Notificações para enviar notificações push para dispositivos registados. Para obter mais informações, veja o artigo Adicionar notificações push à sua aplicação. Para saber mais sobre os Centros de Notificação, consulte o Resumo dos Centros de Notificação.

Como: Permitir o impulso direcionado usando Tags

Os Centros de Notificação permitem enviar notificações específicas para registos específicos utilizando tags. Várias tags são criadas automaticamente:

  • O ID de instalação identifica um dispositivo específico.
  • O ID do Utilizador com base no SID autenticado identifica um utilizador específico.

O ID de instalação pode ser acedido a partir da propriedade instalaçãoId no MobileServiceClient. O exemplo a seguir mostra como utilizar um ID de instalação para adicionar uma etiqueta a uma instalação específica nos Centros de Notificação:

hub.PatchInstallation("my-installation-id", new[]
{
    new PartialUpdateOperation
    {
        Operation = UpdateOperationType.Add,
        Path = "/tags",
        Value = "{my-tag}"
    }
});

Quaisquer tags fornecidas pelo cliente durante o registo de notificação push são ignoradas pelo backend ao criar a instalação. Para permitir que um cliente adicione tags à instalação, tem de criar uma API personalizada que adicione tags utilizando o padrão anterior.

Consulte as etiquetas de notificação push adicionadas ao Cliente no Serviço de Aplicações as Aplicações Móveis completaram a amostra de quickstart por exemplo.

Como: Enviar notificações push a um utilizador autenticado

Quando um utilizador autenticado se regista para notificações push, uma etiqueta de identificação do utilizador é automaticamente adicionada ao registo. Ao utilizar esta etiqueta, pode enviar notificações push para todos os dispositivos registados por essa pessoa. O seguinte código obtém o SID do utilizador fazendo o pedido e envia uma notificação de impulso de modelo para cada registo do dispositivo para essa pessoa:

// Get the current user SID and create a tag for the current user.
var claimsPrincipal = this.User as ClaimsPrincipal;
string sid = claimsPrincipal.FindFirst(ClaimTypes.NameIdentifier).Value;
string userTag = "_UserId:" + sid;

// Build a dictionary for the template with the item message text.
var notification = new Dictionary<string, string> { { "message", item.Text } };

// Send a template notification to the user ID.
await hub.SendTemplateNotificationAsync(notification, userTag);

Ao registar-se para notificações push de um cliente autenticado, certifique-se de que a autenticação está completa antes de tentar o registo. Para obter mais informações, consulte Push para os utilizadores no Serviço de Aplicações Mobile Apps completaram a amostra de arranque rápido para backend .NET.

Como: Debug e resolução de problemas do .NET Server SDK

Serviço de Aplicações do Azure fornece várias técnicas de depuração e resolução de problemas para aplicações ASP.NET:

Registo

Pode escrever para Serviço de Aplicações registos de diagnóstico utilizando o ASP.NET escrita de vestígios padrão. Antes de poder escrever para os registos, tem de ativar os diagnósticos no seu backend da Aplicação Móvel.

Para ativar diagnósticos e escrever para os registos:

  1. Siga os passos no Ativar o registo de aplicações (Windows).

  2. Adicione a seguinte declaração usando o seu ficheiro de código:

     using System.Web.Http.Tracing;
    
  3. Crie um escritor de traços para escrever a partir do backend .NET para os registos de diagnóstico, da seguinte forma:

     ITraceWriter traceWriter = this.Configuration.Services.GetTraceWriter();
     traceWriter.Info("Hello, World");
    
  4. Volte a publicar o seu projeto de servidor e aceda ao backend da Aplicação Móvel para executar o caminho de código com a sessão de registo.

  5. Faça o download e avalie os registos, conforme descrito nos ficheiros de registo do Access.

Depuração local com autenticação

Pode executar a sua aplicação localmente para testar alterações antes de as publicar na nuvem. Para a maioria dos backends de Azure Mobile Apps, prima F5 enquanto está no Estúdio Visual. No entanto, existem algumas considerações adicionais ao utilizar a autenticação.

Você deve ter uma aplicação móvel baseada na nuvem com Serviço de Aplicações Autenticação/Autorização configurada, e seu cliente deve ter o ponto final em nuvem especificado como o anfitrião de login alternativo. Consulte a documentação da plataforma do seu cliente para os passos específicos necessários.

Certifique-se de que o seu backend móvel tem Microsoft.Azure.Mobile.Server.Authentication instalado. Em seguida, na classe de startup OWIN da sua aplicação, adicione o seguinte, depois de ter MobileAppConfiguration sido aplicado ao seu HttpConfiguration:

    app.UseAppServiceAuthentication(new AppServiceAuthenticationOptions()
    {
        SigningKey = ConfigurationManager.AppSettings["authSigningKey"],
        ValidAudiences = new[] { ConfigurationManager.AppSettings["authAudience"] },
        ValidIssuers = new[] { ConfigurationManager.AppSettings["authIssuer"] },
        TokenHandler = config.GetAppServiceTokenHandler()
    });

No exemplo anterior, deverá configurar as definições de aplicação authAudience e authIssuer dentro do seu Web.config ficheiro para cada um deles ser o URL da raiz da sua aplicação, utilizando o esquema HTTPS. Da mesma forma, deverá definir authSigningKey para ser o valor da chave de assinatura da sua aplicação. Para obter a chave de assinatura:

  1. Navegue para a sua aplicação dentro do portal do Azure
  2. Clique em Ferramentas, Kudu, .
  3. No site de Gestão Kudu, clique em Ambiente.
  4. Encontre o valor para WEBSITE_AUTH_SIGNING_KEY.

Utilize a chave de assinatura para o parâmetro authSigningKey na sua aplicação local config. O seu backend móvel está agora equipado para validar fichas quando executa localmente, que o cliente obtém o símbolo do ponto final baseado na nuvem.