Iphone 使用url方案传递参数

Iphone 使用url方案传递参数,iphone,ios,cocoa-touch,url-scheme,Iphone,Ios,Cocoa Touch,Url Scheme,我正在开发一个可以通过URL启动的应用程序。我已经在信息页面上使用xcode定义了我的url方案。我为我的捆绑标识符和URL方案myapp填写了标识符 现在如果我尝试在safari中打开myapp://foo,它启动我的应用程序并在中的断点处停止 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication

我正在开发一个可以通过URL启动的应用程序。我已经在信息页面上使用xcode定义了我的url方案。我为我的捆绑标识符和URL方案myapp填写了标识符

现在如果我尝试在safari中打开myapp://foo,它启动我的应用程序并在中的断点处停止

- (BOOL)application:(UIApplication *)application
        openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
     annotation:(id)annotation
方法

问题是注释、url、应用程序、sourceapplication参数为零。所以我不能传递参数


在不必要的时间损失之后,我发现问题出在调试器上。它显示的网址是零,如果我试图打印描述,它说

Printing description of url:
<nil>

调试器还会显示url。

您确定项目处于调试模式吗!?请参见此处

您针对/测试的是哪个版本的iOS?您是说此方法的
url
变量为零,还是
url
的参数字符串(因为它是NSURL)为零?你如何确定它是零?你确定你正在传递一个有效的编码链接吗?我经常使用这种委托方法,但我从未体验过这种行为@BillyLazzaro nsurl是nil@Alexander正如我在问题中所说,我正试图打开地址myapp://foo,它启动了我的应用程序,但我没有得到字符串foo。我也尝试过myapp://?foo=1234,运气不好……在这种情况下,请确保您的项目处于“调试”模式而不是“发布”模式。在默认的发布模式下,很多事情都可以得到优化是的,我非常确定。我的代码中也有许多预处理器指令,如#ifdef DEBUG。有时,调试器会特别在设备上执行此操作。只要您的nslog看到该值,您就应该可以了。如果您中断并键入“po url”,您会得到什么?我还可以问一下您将如何传递数据吗?我建议使用base64编码的json对象。这允许结构化数据,而且非常简单,就像在我的回答中一样,我看到了预期的值,然后我可以解析等等。。我无法将我的答案标记为正确,因为我必须等待一天……事实上,正如我在问题中所说的,我只是键入safari的地址栏myapp://fooo. 所以我不会从我的另一个应用程序调用它。所有编码都必须由safari完成
if (! url) {
    return NO;
}