每日一问

主页|每日一问

【每日一问】iOS 开发中,如果使用 CocoaPods 进行组件化,组件中如何配置 subSpecs?

比如 Vendor 组件通过 CocoaPods 集成神策 iOS SDK,主 App 通过 CocoaPods 集成 Vendor 组件。 如何配置神策 iOS SDK 中 DISABLE_UIWEBVIEW、DISABLE_TRACK_GPS 这两个 subSpecs?

By |2020-05-17T17:56:03+08:004月 30th, 2020|每日一问【每日一问】iOS 开发中,如果使用 CocoaPods 进行组件化,组件中如何配置 subSpecs?已关闭评论

【每日一问】Android 中 BuildConfig 类有什么作用?

程序编译成功后,会在每一个 Module 的 build/generated/sources/buildConfig/debug(或 release)/包名 文件夹下生成一个 BuildConfig 类,应用代码通过这个类可以获取跟 Gradle 构建有关的信息。例如通过 BuildConfig.DEBUG 就可以判断当前是否处于 debug 模式,来控制日志输出。并且官方提供了 buildConfigField() 方法,将自定义字段添加到 Gradle 构建配置文件的 BuildConfig 类中,神策 Android SDK 中正是采用这种方式去配置 SDK 版本号。

By |2020-05-17T17:56:25+08:004月 29th, 2020|每日一问【每日一问】Android 中 BuildConfig 类有什么作用?已关闭评论

【每日一问】Android 如何获取当前真正的屏幕方向?

通过 getResources().getConfiguration().orientation 可以获取到当前的屏幕方向,有两种取值 ORIENTATION_LANDSCAPE 和 ORIENTATION_PORTRAIT。这样我们通过对比就可以判断出当前的方向:

By |2020-05-17T17:56:54+08:004月 28th, 2020|每日一问【每日一问】Android 如何获取当前真正的屏幕方向?已关闭评论

【每日一问】Android 中如何实现一个自动初始化的 SDK?

一般情况下,当我们做了一个 SDK 提供给其他开发者使用的时候,总是会预留一个初始化接口,然后要求使用者去调用它以让 SDK 生效。这种模式会导致用户的业务里堆满了各种各样的 XXX.init(),并且如果用户忘记调用我们的初始化方法也会导致 SDK 失效。无侵入的完成 SDK 初始化意味着不需要开发者调用任何代码,只需要集成依赖,SDK 就可以自动进行初始化并生效。

By |2020-05-17T17:57:11+08:004月 27th, 2020|每日一问【每日一问】Android 中如何实现一个自动初始化的 SDK?已关闭评论

【每日一问】Fragment 内全埋点 App 点击事件如何采集 Fragment 页面名称和标题?

Fragment 与 Activity 相似,有自己的生命周期、布局。常作为 Activity 的组成部分。Fragment 在 App 开发中十分常用,例如,很多应用页面中会有多个 Tab 页对应不同的 Fragment ,还有很多 App 采用单页面实现,即只有一个 Activity ,所有的页面使用 Fragment 来实现 。不同的 Fragment 可能会复用相同的布局或包含相同的元素内容,这些元素的点击事件如果采集不到 Fragment 的页面名称和标题,就很难区分点击事件是在哪个页面中触发的,导致全埋点点击事件很难发挥它最大价值,所以在 Fragment 内的 App 点击事件需要采集 Fragment 的页面名称和标题。

By |2020-05-17T17:57:35+08:004月 26th, 2020|每日一问【每日一问】Fragment 内全埋点 App 点击事件如何采集 Fragment 页面名称和标题?已关闭评论

【每日一问】iOS 中如何采集 App 启动和退出事件?

在分析如何采集启动和退出事件之前,我们先简单介绍一下 iOS 应用程序状态相关的内容。大家都知道,对于一个标准的 iOS 应用程序来说,在不同的时期会有不同的状态,如下图所示。

By |2020-05-17T17:58:11+08:004月 23rd, 2020|每日一问【每日一问】iOS 中如何采集 App 启动和退出事件?已关闭评论

【每日一问】iOS 中如何实现在两个 App 间共享 Keychain 数据?

对于每一个应用来说,KeyChain都有两个访问区,私有区和公共区。私有区类似于沙盒,只有本程序存储的数据可以访问。如果要想做到两个 App 间共享数据则需要数据放在公共区。想要数据放到公有区则首先要配置公有区的名称,即 ”Keychain Groups”。

By |2020-05-17T17:58:28+08:004月 22nd, 2020|每日一问【每日一问】iOS 中如何实现在两个 App 间共享 Keychain 数据?已关闭评论

【每日一问】Android 中如何采集 Fragment 页面浏览事件

在 Android 系统中,Fragment 页面浏览其实就是指切换不同的 Fragment  。Fragment 本身是没有生命周期的监听的,后期在 Android Support 25.1.0 和 AndroidX 中的 FragmentManager 增加了 FragmentLifecycleCallbacks 用来监听 Fragment 的生命周期,如果不依赖于 Support 库和 AndroidX 库,就无法使用 FragmentLifecycleCallbacks 来监听 Fragment 的生命周期。

By |2020-05-17T17:58:44+08:004月 21st, 2020|每日一问【每日一问】Android 中如何采集 Fragment 页面浏览事件已关闭评论

【每日一问】在采集服务端事件的时候,如何保证数据的不丢不重?

神策的服务端 SDK 是通过 Consumer 去构建适用不同场景的 SensorsAnalytics 实例,一般来说会有三种 Consumer:DebugConsumer、BatchConsumer、FileConsumer(在不同代码实现里实际的类名和这里不一致)。

By |2020-05-17T17:58:58+08:004月 20th, 2020|每日一问【每日一问】在采集服务端事件的时候,如何保证数据的不丢不重?已关闭评论