2013-12-26 3 views
1

Я пытаюсь интегрировать самые популярные приложения для навигации в свое приложение, и все те, кого я выбрал, за исключением Sygic.Sygic URL-схема - приложение не открывается

После this guide, я написал код:

NSString *URL = [NSString stringWithFormat:@"com.sygic.aura://coordinate|%f|%f|drive", 
              self.coordinate.longitude, 
              self.coordinate.latitude]; 

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:URL]]; 

Но когда код выполняется, Sygic не открывается, ничего не происходит.

Проверка [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"com.sygic.aura://"]] возвращает YES, когда приложение установлено, и NO, когда это не так (как должно быть).

Я тестировал использование «Sygic Brasil» и «Sygic (All Regions)», версия 13, но ни один не откроется. Я также пробовал процентное экранирование строки URL, и это тоже не сработало.

+0

Попытка добавить 'HTTP: //' 'Перед com.sygic.aura' и проверить его. –

+0

Пробовал 'http: //com.sygic.aura/coordinate |% f |% f | drive', все еще ничего:/ – Guilherme

+0

Вы добавили типы URL в файл' info.plist'? –

ответ

6

вы попробуйте следующий код,

NSString *URL = [NSString stringWithFormat:@"com.sygic.aura://coordinate|%f|%f|drive", 
             self.coordinate.longitude, 
             self.coordinate.latitude]; 

NSURL *newURL = [NSURL URLWithString:[URL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] ]; 

if(newURL) 
{ 
    [[UIApplication sharedApplication] openURL:newURL]; 
} 
else 
{ 
    NSLog(@"Something wrong with lat or long or both"); 
} 
+0

Я попытался убежать, это тоже не сработало. – Guilherme

+0

Добавьте 'http: //' здесь также. Даже я могу открыть url в сафари, но не смог открыть страницу. Для меня ваш URL-адрес: http: //com.sygic.aura: //coordinate%7C78.345000%7C17.989000%7Cdrive –

+0

Собственно, ваш первый ответ был прав. Я использовал stringBy ** Замена ** вместо ** Добавление **. Конечно, это не спасет вас. И используемый URL должен быть тем, который я использовал на первом месте (без 'http: //'). – Guilherme

Смежные вопросы