iOS schem与Universal Link 调试时踩坑解决记录

 更新时间:2023年01月18日 11:22:20   作者:馋嘴的张先生  
这篇文章主要为大家介绍了iOS schem与Universal Link 调试时踩坑解决记录,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

简介

scheme和Universal Link是在iOS中两种可以在网页中点击回跳到自己预定的APP的两种方式。至于这两种方式需要怎么配置,这里就不做详细的介绍了。网上的文章一搜一大堆。今天主要是说一下这次的配置过程中遇到的问题。

AppDelegate和SceneDelegate

SceneDelegate是在iOS13的时候新增的,之前做老项目的迭代更新的时候很少接触这个文件。这回就简单的和它交流一下。

对于这次的交流结论是:当AppDelegate和SceneDelegate两个文件共存的时候,我们不仅仅要关注AppDelegate中的回调函数,还要关注SceneDelegate代理的回调函数,因为在不同的iOS系统下走的文件回调是不一样的。

在iOS13之前通通走AppDelegate,iOS13之后就会走SceneDelegate。

问题:在iOS13以上冷启动的时候不会走代理函数!

上面已经说过在iOS13之前通通走AppDelegate,iOS13之后就会走SceneDelegate。

如果你用了Scheme方式:

iOS13之前会走这个代理函数

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{
}

我们只需要在里面多自己相应的逻辑处理就可以了,并且不用关注是冷启动还是APP已经在后台挂起。都能在这里获取到你想要的参数。

iOS13之后会走

- (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts{
    UIOpenURLContext *urlContext = URLContexts.anyObject
}

这时就会出现问题了,这个函数只有在APP在后台挂起的时候才会走。如果是冷启动的时候,压根不会走这个函数,从而导致我们拿不到那个想要跳转的链接地址。

如果你用了Universal Link方式:

iOS13之前会走这个代理函数

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler{
}

我们只需要在里面多自己相应的逻辑处理就可以了,并且不用关注是冷启动还是APP已经在后台挂起。都能在这里获取到你想要的参数。

iOS13之后会走

- (void)scene:(UIScene *)scene continueUserActivity:(NSUserActivity *)userActivity{
}

这时就会出现问题了,这个函数只有在APP在后台挂起的时候才会走。如果是冷启动的时候,压根不会走这个函数,从而导致我们拿不到那个想要跳转的链接地址。

总结

在你使用SceneDelegate的时候不管你是scheme还是Universal Link 都会在冷启动的时候不走代理函数。解决办法有两种:
1.你可以不用SceneDelegate这个文件。这样就可以避免问题的出现。毕竟现在的APP好像并没有强制开发者只用SceneDelegate;
2.在无数次的测试的时候我们会发现在APP冷启动的时候都会走SceneDelegate的

- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions

我们可以对这个函数做做文章。 在connectionOptions中有两个属性,一个是URLContexts另一个是userActivities,你再看看对应在SceneDelegate的函数都有对应的形参,所以我们可以在冷启动的时候获取一下相应的参数然后从而达到获取链接参数的目的;

scheme:
UIOpenURLContext *urlContext = connectionOptions.URLContexts.anyObject;
Universal Link:
NSUserActivity *userActivity =connectionOptions.userActivities.anyObject;

以上就是iOS schem与Universal Link 调试时踩坑解决记录的详细内容,更多关于iOS schem Universal Link调试的资料请关注脚本之家其它相关文章!

相关文章

  • objective-c实现点到直线的距离及与垂足的交点

    objective-c实现点到直线的距离及与垂足的交点

    这篇文章主要给大家介绍了利用objective-c实现点到直线的距离及与垂足的交点的相关资料,文中给出了详细的实现思路和实现代码,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-04-04
  • IOS CoreAnimation中layer动画闪烁的解决方法

    IOS CoreAnimation中layer动画闪烁的解决方法

    这篇文章主要为大家详细介绍了IOS CoreAnimation中layer动画闪烁的原因,分享了layer动画闪烁的解决方法,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • 解决iOS下无法触发focus事件的问题

    解决iOS下无法触发focus事件的问题

    今天小编就为大家分享一篇解决iOS下无法触发focus事件的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • IOS 聊天界面(自适应文字)的实现

    IOS 聊天界面(自适应文字)的实现

    本文主要介绍一个实现聊天界面的思路过程,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • iOS简单抽屉效果的实现方法

    iOS简单抽屉效果的实现方法

    这篇文章主要为大家详细介绍了iOS简单抽屉效果的实现方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • 详解IOS中文件路径判断是文件还是文件夹

    详解IOS中文件路径判断是文件还是文件夹

    这篇文章主要介绍了详解IOS中文件路径判断是文件还是文件夹的相关资料,这里提供两种实现方法,需要的朋友可以参考下
    2017-09-09
  • 提高iOS开发的小技巧和思路小结 (二)

    提高iOS开发的小技巧和思路小结 (二)

    这篇文章主要跟大家分享了关于提高iOS开发的一些小技巧和思路,通过本文总结的这些小技巧和思路相信对对大家开发iOS具有一定的参考价值,感兴趣的朋友们可以参考学习,下面来跟着小编一起学习学习吧。
    2017-04-04
  • iOS应用开发中监听键盘事件的代码实例小结

    iOS应用开发中监听键盘事件的代码实例小结

    这篇文章主要介绍了iOS应用开发中监听键盘事件的代码实例小结,呼出键盘等操作为iOS App中的必备功能,示例代码为传统的Objective-C,需要的朋友可以参考下
    2016-03-03
  • iOS中一行代码实现 UIView 镂空效果

    iOS中一行代码实现 UIView 镂空效果

    这篇文章主要介绍了一行代码实现 UIView 镂空效果,这是一种实现 UIView 镂空效果的方案,可以快速实现任意形状的镂空、文字的镂空、带镂空的毛玻璃效果等。需要的朋友可以参考下
    2018-11-11
  • iOS开发教程之WKWebView与JS的交互

    iOS开发教程之WKWebView与JS的交互

    这篇文章主要给大家介绍了关于iOS开发教程之WKWebView与JS的交互的相关资料,文中通过示例代码介绍的非常详细,对各位iOS开发者们具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07

最新评论