9 votes

Ajout du symbole de la livre aux URL dans ios 14

J'ai une application en cours d'exécution dans un serveur web, qui redirige vers une application installée sur un appareil iOS 14. L'url est sous la forme

myapp://?p=someBase64EncodedString

et l'application décode la chaîne de caractères. Après la mise à jour vers iOS 14, l'url obtenue par l'application est la suivante

myapp://?p=someBase64EncodedString# et le symbole de la livre ajouté à la fin de la chaîne n'est pas décodé sur mon appareil. Lorsque j'utilise ignoreUnknownCharacters tout fonctionne bien, mais d'où vient cette # proviennent-ils ?

2voto

gcharita Points 474

Comme @jtbandes l'a mentionné dans les commentaires, # est un caractère valide dans une URL.

Pour éviter ce genre de problèmes, la façon la plus sûre d'analyser une URL est d'utiliser la méthode suivante URLComponents à la suite de este réponse.

Voici un exemple :

let urlString = "https://test.host.com:8080/Test/Path?test_parameter=test_value#test-fragment"
let urlComponents = URLComponents(string: urlString)

print("scheme: \(urlComponents?.scheme ?? "nil")")
print("host: \(urlComponents?.host ?? "nil")")
print("port: \(urlComponents?.port ?? -1)")
print("path: \(urlComponents?.path ?? "nil")")
print("query: \(urlComponents?.query ?? "nil")")
print("queryItems: \(urlComponents?.queryItems ?? [])")
print("fragment: \(urlComponents?.fragment ?? "nil")")

Ceci aura comme résultat :

scheme: https
host: test.host.com
port: 8080
path: /Test/Path
query: test_parameter=test_value
queryItems: [test_parameter=test_value]
fragment: test-fragment

2voto

Dan M Points 2937

Swift 5 et les cordes brutes pourraient-ils être les coupables ? Je pense que l'application utilise # comme délimiteur de chaîne personnalisé et qu'au décodage, elle remplace un caractère spécial par un #.

0voto

Anonymous Points 171

Il peut s'agir d'une action api dans une redirection pour une api que vous avez utilisée. Si c'est le cas, il est hors de votre contrôle et potentiellement hors de votre champ d'accès.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X