美文网首页
2019-10-25 SFSafariViewControlle

2019-10-25 SFSafariViewControlle

作者: zxh123456 | 来源:发表于2019-10-25 15:23 被阅读0次
#import <SafariServices/SafariServices.h>

项目中使用到SFSafariViewController,基本都是为了获取safari的数据交互,比如推广链接url里面的uid等信息。
ios10开始新增要求:不允许隐藏、透明度不得低于0.05、不允许设置view大小为CGSizeZero,不能移出屏幕外,但是可以放在某个自己的view的下面

@interface ViewController ()<SFSafariViewControllerDelegate>
@property (nonatomic , strong) SFSafariViewController *safariView;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //SFSafariViewController只能在init时候传入url,不可以跳转
    self.safariView = [[SFSafariViewController alloc] initWithURL:[NSURL URLWithString:@"https://jifenkoudai.com/html5/1.html"]];
    self.safariView.delegate = self;
    self.safariView.view.backgroundColor = [UIColor whiteColor];
    //不允许隐藏、透明度不得低于0.05、不允许设置view为CGSizeZero,不能移出屏幕外,但是可以放在某个view的底部
    self.safariView.view.alpha = 0.05;
    self.safariView.view.frame = CGRectMake(0.0, 0.0, 0.5, 0.5);
    [self.view insertSubview:self.safariView.view atIndex:0];
    //必须手动调用addChildViewController和didMoveToParentViewController
    [self addChildViewController:self.safariView];
    [self.safariView didMoveToParentViewController:self];
}

//加载完成之后调用
- (void)safariViewController:(SFSafariViewController *)controller didCompleteInitialLoad:(BOOL)didLoadSuccessfully
{
    if(didLoadSuccessfully){
        [self.safariView willMoveToParentViewController:nil];
        [self.safariView.view removeFromSuperview];
        [self.safariView removeFromParentViewController];
    }
}

@end

整体逻辑:
1.老用户推荐新用户,生成带uid的专属链接 (http://www.aaa.com/invite.html?uid=888
2.新用户打开url,safari记录uid到本地存储 (uid=888)
3.新用户下载app
4.新用户打开app,app访问推荐地址同域名下的url(http://www.aaa.com/index.html),此链接只干一件事:读取本地存储数据,拼接schemes和key,value, schemes://key=vlaue&key1=value1&...,js设置location.href=拼接的schemes,会自动通讯传给app

    <script>
        location.href = "xianpaozc://uid=888";
    </script>

5.app内部在-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options 方法获取url,解析参数
6.获取参数后,绑定新老用户关系。

相关文章

网友评论

      本文标题:2019-10-25 SFSafariViewControlle

      本文链接:https://www.haomeiwen.com/subject/bhwsvctx.html