Conteúdo


Inclua notificações push em seu aplicativo iOS

Troque dados em dispositivos móveis sem confusão

Comments

Os aplicativos móveis são exclusivos e com isso são frequentemente carregados e descarregados, e os dispositivos nos quais eles são executados podem se conectar a um provedor de serviços apenas intermitentemente. Esses aplicativos devem receber periodicamente as atualizações de dados e notificar os usuários sobre eventos do servidor. Em tais casos, um serviço de notificação push pode informar aos usuários que um serviço está de volta ou que novos dados estão chegando.

Mantenha seus usuários do iOS atualizados. Inclua as notificações push em seu aplicativo Node.js, por meio do serviço de push no IBM Cloud.

O que você precisa para construir seu aplicativo

Etapa 1. Configure seu ambiente

Para configurar um ambiente IBM Cloud para aplicativos móveis:

  1. Efetue login em sua conta IBM Cloude selecione Painel no menu superior.
  2. Em seu painel, selecione CRIAR UM APLICATIVO.
  3. Um assistente é aberto para guiar você na criação do aplicativo backend. Selecione Móvel.
  4. Em seguida, selecione a plataforma: iOS 8.
  5. Clique em Continuar.
  6. Escolha um nome exclusivo para seu aplicativo e clique em CONCLUIR.
  7. Você verá a Rota, Chave do aplicativo e Segredo do aplicativo. Clique em Continuar.
  8. Agora o ambiente IBM Cloud básico está pronto. Para ver a Rota, Chave do aplicativo e Segredo do aplicativo (necessários posteriormente), é possível clicar em OPÇÕES MÓVEIS. Your application Overview page
    Your application Overview page
  9. Tente conectar-se ao servidor IBM Cloud que acabou de criar ativando um navegador e conectando-se a http://<app>.mybluemix.net.
  10. Instale a ferramenta cf para que possa fazer upload facilmente de seu código para o servidor IBM Cloud. É possível ignorar esta etapa e implementar o código de DevOps Services diretamente, mas, nesse caso, não será possível depurar o código. Eu sugiro salvar uma cópia do código em seu computador local.
  11. Abra um console de comando e conecte-se ao servidor IBM Cloud com a ferramenta cf:
    cf login -a https://api.ng.bluemix.net

    Insira a conta e a senha do IBM Cloud para que possa sincronizar o código com o IBM Cloud.

Etapa 2. Inclua o serviço de push no IBM Cloud

Para ter a capacidade de notificação push, obtenha o código do DevOps Services diretamente. (Discutiremos a estrutura do código do serviço Push na Etapa 5.)

  1. Realize clone Git do código a partir do DevOps Services. Três pastas são transferidas por download: bluelist-push-android, bluelist-push-iOS e bluelist-push-node, as quais são usadas para plataformas Android e iOS e o ambiente Node.js, respectivamente.
  2. Alterne para a pasta , atualize manifest.yml com o nome <app> que você criou na Etapa 1. Atualize app.js com o ApplicationId correto e ApplicationRoute que você gerou na Etapa 1.
  3. Use a ferramenta cf para fazer upload do código atualizado para o servidor IBM Cloud:
    cf push <App> -p .

Agora o serviço de push no IBM Cloud está concluído e pronto para uso.

Etapa 3. Prepare para o serviço Apple Push Notification

Para desenvolver e implementar um aplicativo para notificações push, deve-se obter os certificados SSL no Apple Dev Center. Cada certificado é limitado a um único aplicativo, identificado por seu ID de pacote; também é limitado a um dos dois ambientes, um para desenvolvimento e um para produção.

  1. Abra um navegador e conecte-se ao Apple Developer Programs. Conecte-se com seu ID e senha da Apple e navegue até o iOS Dev Center.
  2. Agora suas opções incluem as seções Certificados, Identificadores, Dispositivos e Perfis de fornecimento . Na seção Certificados , gere um certificado para desenvolvimento e produção.
  3. Na seção Identificadores , crie um ID do aplicativo. Verifique para ativar o serviço Notificações Push e, em seguida, gere o Certificado Push SSL e faça download dele.
    Observação: Os certificados de desenvolvimento e produção são diferentes. Apple Push                             Notification service SSL certificates
    Apple Push Notification service SSL certificates
  4. Na página Dispositivo , insira o UDID de seu dispositivo iOS para desenvolvimento.
  5. Na página Perfis de fornecimento , gere os perfis para desenvolvimento ou distribuição.
  6. Faça upload do Certificado Push SSL gerado na Etapa 3.3. Abra um navegador, conecte-se ao IBM Cloud, e acesse o Serviço Push . É possível ver que existem duas configurações: O Sandbox (desenvolvimento) Configuração e Configuração da produção. Selecione o arquivo .p12 do Certificado com a senha e depois faça upload dele. Como Sandbox e Produção são arquivos de certificado diferentes, eles não podem ser trocados. Push Service                             page on IBM Cloud
    Push Service page on IBM Cloud

Etapa 4. Atualizar o ambiente de desenvolvimento e implementação do iOS

  1. Abra um console e navegue até a pasta iOS que você transferiu por downloaded na Etapa 2. Execute Pod install para instalar as bibliotecas de dependência.
  2. No Xcode, abra o arquivo de projeto .xcworkspace do iOS e construa-o.
  3. Abra o arquivo Bluelist.plist e atualize as variáveis applicationId, applicationSecret e applicationRoute .
  4. Abra o arquivo Bluelist-info.plist , atualize o identificador de pacote configurável da Etapa 3.
  5. Não se esqueça de atualizar o Certificado do projeto para que possa implementar seu código nos dispositivos.

Etapa 5. Testar a notificação

  1. Execute Bluelist do Xcode. Quando ele iniciar, uma caixa de diálogo perguntará: Permitir notificação push. Selecione Sim. Se você pressionar Não por engano, será possível mudar as configurações navegando para Configurações > Notificações > Bluelist.
  2. Ative o aplicativo Bluelist de dois dispositivos. Se os dados em um dos dispositivos foram atualizados, o outro dispositivo receberá uma notificação. Bluelist app                             notification
    Bluelist app notification
  3. É possível também enviar a notificação push do IBM Cloud manualmente. Acesse o serviço de Push no IBM Cloud, selecione a guia Notificação , preencha a mensagem em Texto da mensagem, clique em Avançar e depois em Enviar. Seu dispositivo iOS obterá a notificação em breve. Sending a push notification from IBM Cloud manually
    Sending a push notification from IBM Cloud manually

A notificação push está funcionando conforme esperado.

Agora, verifique o código para que possa ativar a notificação push em seu aplicativo. No primeiro fragmento, o qual mostra app.js em Node.js, o código chama inicialmente InitializeService e depois envia a notificação usando o método sendBroadcastNotification:

var config = {
     applicationRoute:"<ApplicationRoute>",
     applicationId:"<ApplicationId>",
     applicationSecret:"<ApplicationSecret>"
};
ibmbluemix.initialize(config);
var push = ibmpush.initializeService();
var message = {
     alert : "Push Notification from Javascript SDK",
     url : "https://www.bluemix.net"
}
push.sendBroadcastNotification(message,null).then(function (response) {
console.log("Notification sent successfully to all devices.", response);

Porém, quando os dados são enviados aos dispositivos? Verifique o fragmento a seguir. Qualquer solicitação de post http enviada para http://<app>.mybluemix.net/notifyOtherDevice calls the TO DO block. Neste exemplo, TO DO envia a notificação para os dispositivos:

appContext=express.Router();
appContext.post('/notifyOtherDevices', function(req,res) {
     //TODO
});

O próximo fragmento mostra o código push (APNS) em um cliente iOS. No início, registre o dispositivo para receber notificações remotas; os usuários veem uma caixa de diálogo perguntando se eles desejam receber serviços de push. Além disso, há duas funções de retorno de chamada: Uma função de retorno de chamada notifica os usuários que a função de push remoto está ativando e, em seguida, registrando IBM Cloud Push a partir do IBM SDK. A segunda função de retorno de chamada será chamada quando o IBM Cloud tiver dados atualizados e notificará o dispositivo para atualizar os dados locais de Bluelist.

Em AppDelegate.m:

- (BOOL)application:(UIApplication *)application 
        didFinishLaunchingWithOptions: NSDictionary *)launchOptions
{
…
        // Register application for push notifications
        [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
            (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | 
            UIRemoteNotificationTypeAlert)];
}

-(void) application:(UIApplication *)application 
            didRegisterForRemoteNotificationsWithDeviceToken:
    (NSData *)deviceToken
{
    // Register Device to receive Push Notifications
    IBMPush *pushService = [IBMPush service];
    [[pushService registerDevice:CONSUMER_ID withConsumerId:CONSUMER_ID
           withDeviceToken:deviceToken.description]continueWithBlock:^id(BFTask *task) {
        if(task.error) {
            NSLog(@"Device Registration failed with error: %@", task.error);
        }
        return nil;
    }];
}

-(void) application:(UIApplication *)application 
        didReceiveRemoteNotification: NSDictionary *)userInfo
{
    // Handle remote Push notification by reloading the list and getting the 
    latest data 
    [self.listViewController listItems: nil];
}

Finalmente, uma palavra sobre a sincronização de dados. Você precisa solicitar ao IBM Cloud para notificar outros dispositivos quando os dados forem atualizados. É possível ver muitos códigos em qualquer lugar em ListViewController.m. Por exemplo:

- (void) createItem: (IBM_Item*) item {
	[self.cloudCodeService post:@"notifyOtherDevices" withDataPayload:nil 
	    withHeaders: nil];
}

Mas por que não vemos a sincronização de dados no código? É porque o serviço IBM Cloud Mobile Data manipula automaticamente a sincronização de dados. Após atualizar os dados, o servidor IBM Cloud chama a segunda função de retorno de chamada em AppDelegate.m e, em seguida, o dispositivo é forçado a recarregar para mostrar os novos dados.

Conclusão

Este tutorial mostra como criar um aplicativo móvel no IBM Cloud a partir do zero, como executar um aplicativo Node.js no IBM Cloud, como o serviço de push interage com diferentes dispositivos e, finalmente, como completar a troca de dados.


Recursos para download


Temas relacionados


Comentários

Acesse ou registre-se para adicionar e acompanhar os comentários.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Desenvolvimento móvel, Cloud computing
ArticleID=1004672
ArticleTitle=Inclua notificações push em seu aplicativo iOS
publish-date=01222016