Receber notificações por push avançadas

Você pode anexar arquivos de imagem às notificações da Apple. A adição de componentes visuais pode aumentar significativamente o envolvimento dos usuários com as notificações por push.

Para receber notificações por push avançadas em seu aplicativo iOS:

  1. Implemente as mensagens por push para o aplicativo, completando as etapas em Mensagens por push.

  2. Verifique se você pode enviar uma mensagem de push de texto para seu aplicativo.

  3. Adicione uma extensão do serviço de notificação completando as seguintes etapas:

    1. In your Xcode project, select File > New > Target.
    2. Selecione Extensão do serviço de notificação.
    3. Verifique se o arquivo NotificationService.m existe.
  4. Abra o arquivo NotificationService.m e verifique se os seguintes métodos Tipo: objetos existem:

    • Um método para receber uma solicitação de notificação.

    • Um método para lidar com a expiração da extensão de serviço.

      Para receber notificações por push avançadas, o primeiro método é usado:

      (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent *contentToDeliver))contentHandler;
      

      Neste método, é possível obter o URL de mídia do userInfo usando a chave attachment-url. Depois de baixar o arquivo para um diretório local, adicione o caminho local a bestAttemptContent.attachments.

      Veja um exemplo do código neste método:

      - (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
      self.contentHandler = contentHandler;
      self.bestAttemptContent = [request.content mutableCopy];
         NSDictionary* userInfo = request.content.userInfo;
      if(userInfo[@"attachment-url"]){
         NSURL* url = [[NSURL alloc] initWithString:userInfo[@"attachment-url"]];
         NSURLSessionDownloadTask* task = [[NSURLSession sharedSession] downloadTaskWithURL:url completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) {
             if(!location){
                 return;
             }
             NSString* tmpDirectory = NSTemporaryDirectory();
             NSString* tmpFilePath = [NSString stringWithFormat:@"file://%@%d%d%@", tmpDirectory, arc4random_uniform(100000),
                                    arc4random_uniform(100000), [url lastPathComponent]];
             NSURL* tmpUrl = [[NSURL alloc] initWithString:tmpFilePath];
             NSError * fileError = nil;
             [[NSFileManager defaultManager] moveItemAtURL:location toURL:tmpUrl error:&fileError];
             if(fileError){
                 return;
             }
             UNNotificationAttachment* attachment = [UNNotificationAttachment attachmentWithIdentifier:@"video" URL:tmpUrl options:nil error:&fileError];
             if(fileError){
                 return;
             }
             self.bestAttemptContent.attachments = @[attachment];
             self.contentHandler(self.bestAttemptContent);
         }];
         [task resume];
       }
      }
      

For more information about rich push notifications with iOS, see UNNotificationAttachment.

Nesta página