【问题标题】:ipad app opens browser in the backgroundipad 应用程序在后台打开浏览器
【发布时间】:2023-03-30 08:00:01
【问题描述】:

我使用 openURL 命令发送短信,但它打开了 safari, 我可以发送命令让它在后台打开吗??

即,用户看不到浏览器打开或它给出的消息,并停留在应用程序中,

NSURL *url = [NSURL URLWithString: @"https://smsgw.exetel.com.au/sendsms/api_sms.php?username=xxx&password=xx&mobilenumber=0xxx&message=xxr&sender=mk&messagetype=Text&referencenumber=04"];

[[UIApplication sharedApplication] openURL: url];

谢谢

【问题讨论】:

  • 没有什么可以作为“xcode 应用程序”。 xcode 只是一个 IDE。
  • 这听起来可能有点邪恶,如果可能的话。

标签: objective-c cocoa-touch ipad background sms


【解决方案1】:

您不能让 Safari 在后台为您打开 URL。但假设您只想请求 URL 而忽略返回的任何内容,您可以尝试:

NSURL *url = [NSURL urlWithString:@"...whatever..."];
NSURLRequest *request = [NSURLRequest requestWithURL:url delegate:nil];
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request];
[connection start];

【讨论】:

    【解决方案2】:

    您可以在您的应用程序中创建UIWebView,并在实例上调用loadRequest:,如下所示:

    UIWebView *webView = [[UIWebView alloc] init];
    
    webView.delegate = self;
    
    NSURL *url = [NSURL URLWithString: @"https://smsgw.exetel.com.au/sendsms/api_sms.php?username=xxx&password=xx&mobilenumber=0xxx&message=xxr&sender=mk&messagetype=Text&referencenumber=04"];
    NSUrlRequest *request = [[NSUrlRequest alloc] initWithURL:url];
    [webView loadRequest:request];
    

    这将在应用程序中加载 URL,而不会将您转到 Mobile Safari。这种方法相对于NSUrlConnection 的好处是,如果你遵守UIWebViewDelegate 协议并在你的委托类中实现webViewDidFinishLoad:,你可以看到调用是否成功。

    【讨论】:

    • 我绝对同意,如果您想捕获错误,Web 视图将更明确地分解问题。您可以捕获 NSURLConnection 的各种加载响应(通过向 NSURLRequest 提供实际委托),但随后您需要检查 HTTP 返回代码(例如,404 通常也会返回页面)并监视连接状态。 Web 视图可能更重量级,但极不可能成为问题。
    • 您的答案+1;这可能正是他所需要的,重量更轻。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 2011-03-20
    • 2019-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多