Regra de segurança de metadados personalizados do Firebase Storage para lista de uids

Estou desenvolvendo um aplicativo para iOS para mensagens, em que um usuário pode enviar a mesma mensagem para várias pessoas. A mensagem é salva no armazenamento do firebase. Desejo permitir apenas que os usuários que receberam a mensagem possam lê-la no armazenamento. Já estou implementando essa estrutura de regras no meu banco de dados firebase.

Para implementar isso para armazenamento, adiciono uma lista de uids ao arquivo de mensagem customMetadata, incluindo uma chave fromUid para a pessoa que compôs a mensagem. Eu faço o seguinte no meu aplicativo iOS:

    var metadataValues = [String:String]()

    for friendUid in friendsSelected.keys {
        metadataValues.updateValue(friendUid, forKey: friendUid) // how do I access these values in my security rules
    }
    metadataValues.updateValue(senderUid, forKey: "fromUid") // how do I access this in security rules 
    let messageMetadata = FIRStorageMetadata()
    messageMetadata.customMetadata = metadataValues

Esta foi minha tentativa de ler e escrever regras de segurança para o nó de mensagens no Firebase Storage, mas não funciona e a documentação não ajuda.

    match /messages/{messageId} {

        allow read: if request.auth.uid == resource.metadata.request.auth.uid; // I want all friend uids to be able to read file
        allow write: if request.auth.uid == resource.metadata.fromUid; // only the person who create the message can access it

}

Minha tentativa não funciona. Como acesso a variável customMetadata com as chaves 'fromUid' e os amigos uids 'request.auth.uid' nas minhas regras de segurança?

Como uma nota lateral, presumo que não haja limite para quantas chaves adiciono ao customMetadata?

questionAnswers(1)

yourAnswerToTheQuestion