Ir para o console

Usar metadados de arquivo no iOS

Depois de fazer o upload de um arquivo para a referência do Cloud Storage, também é possível acessar e atualizar os metadados do arquivo para, por exemplo, atualizar o tipo do conteúdo. Os arquivos também podem armazenar os pares de chave/valor personalizados com metadados adicionais.

Acessar metadados de arquivo

Os metadados de arquivos contêm propriedades comuns como name, size e contentType, também chamados de tipos MIME, além de outras menos comuns como contentDisposition e timeCreated. É possível recuperar esses metadados de uma referência do Cloud Storage utilizando o método metadataWithCompletion:.

Swift

// Create reference to the file whose metadata we want to retrieve
let forestRef = storageRef.child("images/forest.jpg")

// Get metadata properties
forestRef.getMetadata { metadata, error in
  if let error = error {
    // Uh-oh, an error occurred!
  } else {
    // Metadata now contains the metadata for 'images/forest.jpg'
  }
}    

Objective-C

// Create reference to the file whose metadata we want to retrieve
FIRStorageReference *forestRef = [storageRef child:@"images/forest.jpg"];

// Get metadata properties
[forestRef metadataWithCompletion:^(FIRStorageMetadata *metadata, NSError *error) {
  if (error != nil) {
    // Uh-oh, an error occurred!
  } else {
    // Metadata now contains the metadata for 'images/forest.jpg'
  }
}];  

Atualizar metadados de arquivo

Atualize os metadados do arquivo a qualquer momento após o upload do arquivo ser concluído usando o método updateMetadata:withCompletion:. Consulte a lista completa e veja mais informações sobre quais propriedades podem ser atualizadas. Somente as propriedades especificadas nos metadados são atualizadas. As demais não são modificadas.

Swift

// Create reference to the file whose metadata we want to change
let forestRef = storageRef.child("images/forest.jpg")

// Create file metadata to update
let newMetadata = StorageMetadata()
newMetadata.cacheControl = "public,max-age=300";
newMetadata.contentType = "image/jpeg";

// Update metadata properties
forestRef.updateMetadata(newMetadata) { metadata, error in
  if let error = error {
    // Uh-oh, an error occurred!
  } else {
    // Updated metadata for 'images/forest.jpg' is returned
  }
}    

Objective-C

// Create reference to the file whose metadata we want to change
FIRStorageReference *forestRef = [storageRef child:@"images/forest.jpg"];

// Create file metadata to update
FIRStorageMetadata *newMetadata = [[FIRStorageMetadata alloc] init];
newMetadata.cacheControl = @"public,max-age=300";
newMetadata.contentType = @"image/jpeg";

// Update metadata properties
[forestRef updateMetadata:newMetadata completion:^(FIRStorageMetadata *metadata, NSError *error){
  if (error != nil) {
    // Uh-oh, an error occurred!
  } else {
    // Updated metadata for 'images/forest.jpg' is returned
  }
}];  

Para excluir propriedades de metadados graváveis, basta transferir a string vazia:

Objective-C

FIRStorageMetadata *newMetadata = [[FIRStorageMetadata alloc] init];
newMetadata.contentType = @"";

// Delete the metadata property
[forestRef updateMetadata:newMetadata completion:^(FIRStorageMetadata *metadata, NSError *error){
  if (error != nil) {
    // Uh-oh, an error occurred!
  } else {
    // metadata.contentType should be nil
  }
}];

Swift

let newMetadata = StorageMetadata()
newMetadata.contentType = "";

// Delete the metadata property
forestRef.updateMetadata(newMetadata) { metadata, error in
  if let error = error {
    // Uh-oh, an error occurred!
  } else {
    // metadata.contentType should be nil
  }
}

Como lidar com erros

Podem ocorrer diferentes erros ao receber ou atualizar metadados, como arquivo inexistente ou usuário sem permissão de acesso ao arquivo desejado. Veja mais informações sobre erros na seção Como lidar com erros.

Metadados personalizados

Especifique metadados personalizados como um NSDictionary que contenha propriedades NSString.

Swift

let metadata = [
  "customMetadata": [
    "location": "Yosemite, CA, USA",
    "activity": "Hiking"
  ]
]    

Objective-C

NSDictionary *metadata = @{
  @"customMetadata": @{
    @"location": @"Yosemite, CA, USA",
    @"activity": @"Hiking"
  }
};

Você pode armazenar dados específicos do app para cada arquivo nos metadados personalizados, mas é altamente recomendável usar um banco de dados (como o Firebase Realtime Database) para armazenar e sincronizar esse tipo de dado.

Propriedades de metadados de arquivo

Veja abaixo uma lista completa de propriedades de metadados em um arquivo:

Propriedade Tipo Gravável
bucket NSString NÃO
generation NSString NÃO
metageneration NSString NÃO
fullPath NSString NÃO
name NSString NÃO
size int64_t NÃO
timeCreated NSDate NÃO
updated NSDate NÃO
md5Hash NSString SIM
cacheControl NSString SIM
contentDisposition NSString SIM
contentEncoding NSString SIM
contentLanguage NSString SIM
contentType NSString SIM
downloadURLs NSArray<NSString> NÃO
customMetadata NSDictionary<NSString, NSString> SIM

Fazer download, upload e atualizar arquivos são tarefas importantes, mas poder removê-los também é essencial. Saiba como excluir arquivos do Cloud Storage.