自定义URL方案ios 9

时间:2015-12-03 00:11:53

标签: ios objective-c url

好吧我觉得我接近解决方案了。我想我一定会错过一些小事。希望你的家伙可以提供帮助。'

我正在尝试让另一个应用程序打开另一个自定义应用程序并从该应用程序运行通过URL方案调用的方法。据我所知,在ios 9中,他们通过在info.plist中定义密钥

来进行管理
git-stitch-repo

而且我认为我已经做得很好。虽然我想要确认这个和其他的事情。首先,我是将它添加到“调用”应用程序的info.plist,还是“接收”应用程序,或两者兼而有之?至于,我现在拥有两者。当我从调用应用程序plist中删除它时,我收到错误。

“此应用不允许查询方案xxx”

请记住,我还在接收应用程序的plist中包含了具有相同方案名称的URL类型和URL方案数组。

调用应用程序我有一个使用此方法代码映射的按钮:

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>URLScheme0</string>
    <string>URLScheme1</string>
    <string>URLScheme2</string>
    ect....
</array>

}

以及我在appDelegate.m中的接收应用程序:

- (IBAction)killMethod:(id)sender {

NSString *customURL = @"TurnOffRelay://";

if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:customURL]]) {

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

} else {

    UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"URL error" message:@"No custom URL defined for Kill Relay" preferredStyle:UIAlertControllerStyleAlert];

    [self presentViewController:alert animated:YES completion:nil];

}

}

根据我现在正在运行的内容,我可以实际按下“调用”应用程序中的按钮,然后从那里打开“接收”应用程序,但是,我想要运行的方法不能在如果声明。我想知道我做错了什么。我很乐意回答有关我可能错过的任何问题。这一直困扰着我。想要某种指导。提前谢谢。

2 个答案:

答案 0 :(得分:0)

注意if ([[url scheme] isEqualToString:@"TurnOffRelay://"])。网址方案是 TurnOffRelay 而不是 TurnOffRelay://

答案 1 :(得分:0)

因此,在将OpenURL更改为openURL然后注意到sourceApplication名称错误之后。我猜测,如果我输入了正确的应用程序,就像在,“调用”If块的应用程序的实际名称将正确进行。但我也相信,如果我没有更改openURL,我会再次陷入困境。

感谢您的帮助。它现在按预期工作。