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 a participação dos usuários com as notificações por push.

Para receber notificações por push avançadas no 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 de serviço de notificação completando as seguintes etapas:

    1. No seu projeto Xcode, selecione 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];
       }
      }
      

Para obter mais informações sobre notificações por push avançadas no iOS, consulte UNNotificationAttachment.

Nesta página