如何在UIApplication无法打开URL时显示警报?

时间:2013-01-21 06:17:43

标签: ios web uiapplication

当网站字符串不为空并且它至少是3的长度时,此方法在Safari中打开网址。但是当我有supplierWebsite = @“www.heritage.com”时,没有任何反应。我知道heritage.com不是有效的网站,因此它不会在UIApplication中激活。我想显示至少一个告诉用户网站不可用的弹出窗口。有什么办法我可以告诉Alertview告诉我们网站不可用。

- (IBAction)doWebOpen:(UIButton *)sender {

if (self.provider.supplierWebSite && [self.provider.supplierWebSite length] > 3) {
    NSString *urlString = [self.provider supplierWebSite];
    NSURL *url = [NSURL URLWithString:urlString];
    [[UIApplication sharedApplication] openURL:url];

}else {

    NSError *err = [NSError errorWithDomain:@"com.cantopenweb" code:509 andDescription:@"This supplier does not have a website."];
    [self showErrorAlert:err];
}}

2 个答案:

答案 0 :(得分:3)

您可以使用canOpenURL方法,

  

[[UIApplication sharedApplication] canOpenURL:[NSURL   URLWithString:@“your website”]];

该方法返回BOOL,因此请检查是否为NO。

如果是,则不能否。

答案 1 :(得分:2)

只需使用UIApplication类的canOpenURL,例如:

if([[UIApplication sharedApplication] canOpenURL:url])
 {
    [[UIApplication sharedApplication] openURL:url];
 }
 else
 {
   //show alert
 }

  

<强> canOpenURL:

     

返回应用程序是否可以打开给定的URL资源。

     

- (BOOL)canOpenURL:(NSURL *)url

     

<强>参数

     

<强>网址

A URL object that identifies a given resource. The URL’s scheme—possibly a custom scheme—identifies which application can
     

处理网址。

     

返回值

     如果没有可用的接受URL的应用程序,则

否;除此以外,   返回YES。讨论

     

此方法保证如果调用openURL:,则另一个   将启动应用程序来处理它。它并不保证   完整的URL有效。可用性

Available in iOS 3.0 and later.
     

在UIApplication.h中声明