我已成功将自己的网址方案添加到我的应用程序中。应用程序使用这些方案正确启动。
现在我想处理传入的数据但是没有调用委托。它是一个通用应用程序,我已将以下功能添加到AppDelegates:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
if (!url) { return NO; }
NSString *URLString = [url absoluteString];
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:NSLocalizedString(@"test message", nil)
message:URLString
delegate:self
cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alert show];
[alert release];
return YES;
}
我正在使用以下架构进行测试:myapp://appalarm.com ...并且期望在URLString
中成为appalarm.com它出了什么问题?
感谢您的回复!
答案 0 :(得分:7)
我试图在another post中澄清一下。阿什利克拉克的答案只是部分正确。在OS 4.0下,handleOpenURL被调用(至少对于文件URL),你必须实现它来处理应用程序在后台时的打开url调用。因此,在两种方法中打开文件可能会打开两次(如果applicationDidFinishLaunchingWithOptions返回YES,它应该是)。请参阅another post。
答案 1 :(得分:5)
如果您的应用程序委托实现了'applicationDidFinishLaunchingWithOptions:',则永远不会调用'handleOpenURL:'方法。查看通过其他方法传递的选项,以确定应用程序的启动方式以及应实施的行为。
答案 2 :(得分:1)
尝试将您的代码放入以下功能
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
if (!url) { return NO; }
NSString *URLString = [url absoluteString];
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:NSLocalizedString(@"test message", nil)
message:URLString
delegate:self
cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alert show];
[alert release];
return YES;
}