如何在Objective-c中使用SafariViewController?

Ste*_*STL 10 objective-c ios

苹果今天拒绝了我的应用程序建议,除其他事项外,我不应强迫我的用户访问我的网页访问我的网页.他们建议使用iOS9中新增的SafariWebController.我去寻找指导,只找到了Swift教程.

我一直在使用以下命令启动Safari,与按钮相关联:

NSURL *url = [NSURL URLWithString:WEBSITE_REGISTRATION_URL];
[[UIApplication sharedApplication] openURL:url];
Run Code Online (Sandbox Code Playgroud)

所以,我会分享我的简单配置,让我们这些人试图跟上那些尚未使用Swift的人.

Ste*_*STL 39

有5个步骤:

  1. 单击项目目标,然后选择"构建阶段".在"Build Phases"下,单击"Link Binary with Libraries"箭头,然后单击加号.在将打开的窗口中搜索SafariServices.在列表中突出显示它,然后单击"添加". 在此输入图像描述

  2. 将库导入到按钮所在的.m文件中:

    #import <SafariServices/SafariServices.h>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在.m文件中定义类扩展以符合Safari VC协议:

    @interface SKWelcomeViewController () <SFSafariViewControllerDelegate>
    
    Run Code Online (Sandbox Code Playgroud)
  4. 实现以下委托方法,当需要解除对Safari View Controller的解雇时将调用该方法:

    - (void)safariViewControllerDidFinish:(SFSafariViewController *)controller {
        [self dismissViewControllerAnimated:true completion:nil];
    }
    
    Run Code Online (Sandbox Code Playgroud)
  5. 最后,IBAction中的代码:

    SFSafariViewController *svc = [[SFSafariViewController alloc] initWithURL:url];
    svc.delegate = self;
    [self presentViewController:svc animated:YES completion:nil];
    
    Run Code Online (Sandbox Code Playgroud)

请享用!

  • 在第3步中,为什么要在.h文件中添加`SFSafariViewControllerDelegate`?你的`SKWelcomeViewController` 类的客户端需要知道`SKWelcomeViewController` 类与`SFSafariViewController` 一起工作吗? (2认同)
  • 对于步骤3,您应该使用.m文件中的类扩展声明您符合协议.这种方式是私下完成的..h文件应该只包含公开的内容. (2认同)
  • @朱利安,你是对的。很不错。谢谢。而且,对于迟到的人...请忽略评论中的步骤编号。Julien 编辑并删除了不必要/不正确的部分。 (2认同)