我有一个自定义的URL方案和一个TARGET应用程序,它注册了这个方案以供识别。
当我在移动版Safari中启动WEB应用程序并按下WEB App中的按钮时,该按钮提供了一个URL链接,并启动了一个专用的TARGET应用程序 - 这是所需的行为。
但是,如果我启动本机SOURCE应用程序,并在UIButton上实现操作,并在那里我将appdelegate称为openURL并传递从Web应用程序使用的相同URL,则TARGET应用程序不会启动。 [UIApplication canOpenURL]检查甚至返回NO,这很奇怪,因为TARGET App DID正确注册了自定义URL方案,否则它将无法在Web应用程序中运行。
任何帮助?
PS:SOURCE和TARGET只是SO的便捷名称。
更新:
- (IBAction)handleAction:(id)sender
{
NSString *urlString = @"nda://nda.undernda/actionundernda?someparamters..";
BOOL isURLSchemeRegistered = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:urlString]];
if (isURLSchemeRegistered == YES)
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
}
else
{
//go to appstore
}
}
答案 0 :(得分:1)
好的,问题是他的网址没有使用UTF8编码转义的字符。
解决方案:
NSString *urlString = @"sorry..can't show this :(";
NSString *escapedUrlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url =[ NSURL URLWithString:escapedUrlString];
[[UIApplication sharedApplication] openURL:url];