关于 iOS App 启动广告这个主题在 V2EX 也基本是定番了,隔一阵子就会有人宣布发现了新姿势屏蔽广告,然后就会有人在底下回复“好像没啥用啊”“XX App 没有用”。作为一个 iOS App 开发者觉得还是特地开一贴说一下 “iOS App 启动广告” 这件事。这样子其他端的开发者或者非开发者的大家下次就不必一惊一乍的了。
首先,我们先明确一个问题:“什么是 iOS App 启动广告?”
iOS App 启动的时候,用户会先看到一个 App 的启动页面(以下称“启动页面”):

然后,会出现一个广告页面(以下称“广告页面”):

后一个就是我们要讨论的 iOS App 启动广告。
那么,这个启动页面和广告页面有啥区别?
前者的技术实现上是 App 工程里的 LaunchScreen ,可以说是 Apple 设计的机制,在 App 启动完成前,就可以展示。显示的内容基本是静态的,无法变化的。(像 Bilibili 客户端能更换的启动页的功能,应该也是在真正的启动页面和广告页面之间,又塞了个和启动页基本布局一致的页面然后更换内容)而且这个 LaunchScreen 在 iOS 系统内部还有一定的 cache 机制,换句话说,如果 App 升级,新 App 的 LaunchScreen 如果发生了变化,可能下一次启动 App 不一定能看到。
(因为 toC 的产品对广告的实时性要求比较高,启动页面的这些特性导致了大家现在不会选择启动页面来展示广告)
后者的技术实现则是全由开发者决定了,长什么样,什么时候显示等等。而对于多数的中小型 toC App 来说,很可能会选择一些广告的 SDK 来让这部分简单化。但是像各种大厂或者银行的主力 App (也就是多数常用的那些国民级别的 App ),他们的这部分逻辑和业务都不太可能接入这类 SDK 。
而这些资源基本都是有一定时效性和变化的特征的:比如现在( 2022 年 12 月),还在显示双十一大促肯定达不到投放的目的,或者广告的图片错了,或者需要根据用户画像推送更高效的图片。这使得多数广告资源都是 App 本身不自带的。
在上面这个下载机制下,不管是 SDK 还是不接入的逻辑,如果要整套机制完备,都绕不开错误处理:如果不知道应该投放什么广告,或者知道要投放的内容但是相关资源没下载成功,怎么办?
多数情况下,一般情况下,不可能显示“广告资源下载失败”这种没用又失败的信息。多数时候可能就不显示或者最近一次下载成功的广告。
总之,后者是自己的地盘自己做主,一般不会在乎系统的各种设置。用户在系统设置里开关各种 toggle ,只是缘木求鱼徒劳无功,有效主要是错觉。
有哪些有一定效果的神奇操作可以屏蔽广告?原理?
- 依靠各种科学工具写各种规则,对各种广告提供商的广告下载的请求进行拦截。
- 开启 App 的时候断开网络 1s 再恢复。
这些方法本质都是企图让广告显示走入错误处理然后达到“去广告”的目的。
有哪些没有效果的操作?为啥?
- 在系统 Settings 里打开或者关闭各种选项。
因为放广告的时候才不看系统 Settings 有啥呢。
有啥办法可以根治这种行为?
除了自律就只剩下他律了。