2015-11-27 1 views
0

En essayant de créer une application qui va ouvrir les cartes Apple situés dans le dispositif iOS avec une source donnée et l'adresse de destination.Ouvrir Apple Maps sur ios 8 et au-dessus ne fonctionne pas

NSString* addr = [NSString stringWithFormat: @"http://maps.apple.com/?daddr=%@&saddr=%@",[_fromTextfield.text stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]],[_toTextfield.text stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]]]; 

addr=[addr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]]; 

NSURL* url = [NSURL URLWithString:addr]; 
if ([[UIApplication sharedApplication]canOpenURL:url]) 
{ 
    [[UIApplication sharedApplication] openURL:url]; 
} 

Mais canOpenURL ne fonctionne pas! Il renvoie toujours NO.

J'ai ajouté "LSApplicationQueriesSchemes urlscheme urlscheme2 urlscheme3 urlscheme4 " dans le fichier Info.plist.

+0

canOpenURL: échec de l'URL: "http% 3A% 2F% 2Fmaps.apple.com% 2F% 3Fdaddr = Liverpool & saddr = Bath" - erreur: "URL d'entrée non valide" – user3182143

+0

J'ai essayé votre code. – user3182143

+0

Si ma réponse ci-dessous est utile pour vous, s'il vous plaît cocher et voter ma réponse. – user3182143

Répondre

1

Essayez ci-dessous coding.it fonctionne parfaitement.

NSString* addr = [NSString stringWithFormat: @"http://maps.apple.com/?daddr=%@&saddr=%@",@"Lacock" ,@"Avebury"]; 
NSURL* url = [NSURL URLWithString:addr]; 
if ([[UIApplication sharedApplication]canOpenURL:url]) 
{ 
    [[UIApplication sharedApplication] openURL:url]; 
} 
1

Si l'erreur est "Cette application n'a pas le droit d'interroger pour le régime WhatsApp"

1) Vérifier les informations du plist.

add LSApplicationQueriesSchemes Array 

add whatsapp String. 

Si l'erreur est une adresse URL invalide.

2) Vérifiez si la chaîne que vous passez n'a pas de caractères spéciaux. Espace blanc spécialement.

string = [string stringByReplacingOccurrencesOfString:@" " withString:@"%20"]; 

puis d'utiliser cette chaîne pour l'URL.

Ces deux éléments devraient être résolus. À votre santé!