当前位置: 首页 > Web前端 > HTML

问题可能并不像看起来那么简单

时间:2023-03-28 12:38:18 HTML

1。前言作为一名技术顾问,您在日常工作中会遇到各种各样的问题。有些问题看似简单,背后的原因却极其复杂。为了更好地解决问题、服务客户,我们需要培养“透过现象看本质”的能力。我们来看一个简单但复杂的真实案例。2.背景晴朗,微风不燥。我在值班。突然,客户反映在使用app点击分析时,扫描二维码后报错,如图2-1所示:图2-1扫描二维码报错信息收到此报错后,我马上查了一下。在介绍具体调查过程之前,我们先来了解一下相关背景知识。2.1.什么是点击分析?点击图,它是页面或页面组区域中不同元素的点击密度的图形表示,使用特殊的高亮颜色形式。点击分析是一种可视化的方法,利用点击图清晰地展示某(些)元素被点击的次数和比例,以帮助用户判断用户热衷的领域,评价页面设计的科学性[1]。2.2.如何使用点击分析点击分析的使用大致分为以下几个步骤[2]:2.2.1.开启点击分析点击分析功能依赖于全埋点中的点击事件,所以需要先开启全埋点点击事件集合。SDKv2.3.0+支持app点击分析功能,需要在初始化SAConfigOptions后调用enableHeatMap开启。-(BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions{//初始配置SAConfigOptions*options=[[SAConfigOptionsalloc]initWithServerURL:<#Datareceivingaddress#>launchOptions:launchOptions];//开启所有埋点options.autoTrackEventType=SensorsAnalyticsEventTypeAppStart|SensorsAnalyticsEventTypeAppEnd|SensorsAnalyticsEventTypeAppClick|SensorsAnalyticsEventTypeAppViewScreen;//启用点击分析options.enableHeatMap=YES;.......//初始化SDK[SensorsAnalyticsSDKstarttionWithConfig.op.2]Option].配置Scheme在App项目中选择TARGETS->Info->URLTypes,点击加号(+),将上一步得到的Scheme配置成URLTypes,如图2-2所示:图2-2配置方案2.2.3。处理传入的URL在AppDelegate的-application:openURL:options:方法-handleSchemeUrl:中调用以处理传感器分析方案:-(BOOL)application:(UIApplication*)appopenURL:(NSURL*)urloptions:(NSDictionary*)options{if([[SensorsAnalyticsSDKsharedInstance]handleSchemeUrl:url]){returnYES;}返回NO;}2.2.4。点击要分析的页面,用手机扫描页面二维码后点击“打开App点击分析”按钮,再点击“打开”按钮即可成功打开待分析App,如图2-3:2-3扫码连接最后点击App中的“继续”按钮,连接App后点击Analysis。了解了背景知识后,我们来回顾一下问题的排查过程。3.问题过程回顾3.1.初步了解问题从客户给的2-1截图可以分析出客户是扫了二维码,没有激活App。这是一个常见问题。客户在使用点击分析时反映了这个问题。这个问题虽然不严重,但是会影响客户使用点击分析功能。有很多因素会影响点击分析的使用。在上面的使用介绍中,每个步骤的每一个错误都可能导致点击分析无法使用。3.2.问题分析客户在扫描点击分析二维码时没有激活App。可能的原因是:没有安装App;Scheme未配置或配置不正确。目前看来最大的可能是没有配置Scheme。这一推断在与客户的沟通中得到证实。3.3.解决方案根据上面的分析,这个问题可以通过配置Scheme来解决。但是仅仅配置Scheme就可以解决客户的问题吗?对于这个问题,我们的最终目的是帮助客户正常使用点击分析,而不仅仅是扫码无法唤起APP的问题。点击分析由于匹配方案不同,我们有两种不同的方案。因此,我们需要就以下问题与客户进行沟通:神策iOSSDK是什么版本;Sensors分析环境的版本是什么。已确认iOSSDK版本满足新匹配方案,而神策分析版仍为旧匹配方案版本。即使配置了Scheme,点击分析也无法正常使用。在确认传感器分析版本比较低后,我们这里会联系客户,成功帮助客户升级分析环境。同时与客户沟通点击分析的其他配置。原来客户没有开启点击分析,于是告诉客户使用点击分析做如下配置:初始化SDK时,需要开启点击分析配置项;初始化SDK时需要开启所有埋点点击事件的采集;配置对应环境的Scheme;处理传入的URL。同时向客户提供相应的文件。这样一来,问题应该就完美解决了。3.4.为什么没有解决然而,问题并没有想象的那么简单。客户反馈问题依然存在,现象和之前一样:扫描点击二维码进行分析,没有唤起App。得到这个消息后,我皱起了眉头。还有什么问题?客户端没有配置Scheme?客户已经截图反映在iOS项目中确实配置了。会不会是配置的Scheme与使用点击分析的项目不匹配?这个比较容易查,让客户把神策分析里配置的Scheme复制过来,和iOS工程里配置的Scheme对比一下,就可以得到答案。果然在iOS项目中配置了测试项目的Scheme,在官方项目中测试了点击分析。跟客户解释清楚后,让客户在iOS项目中配置官方项目的Scheme。现在问题应该解决了!3.5.为什么还没有解决?但是,事实并非如此。客户反馈:“配置了官方项目的Scheme后,扫码可以唤醒app,但是点击解析的页面一直在转圈圈,还是连接不上。”这是什么原因?下面分析一下扫码连接的流程:扫码唤醒App后,需要将二维码中的URL传给SDK;SDK会解析URL中的信息,得到上报页面结构信息的地址;上传App页面结构,进入点击分析页面进行展示。目前点击分析页面一直在原地打转,原因是App端的页面结构信息没有上传。SDK在处理二维码信息时,如果检测到是点击分析链接,会校验点击分析的配置。如果点击分析满意,会弹窗提示:“正在连接app点击分析”。如果不满意,会弹出相应的错误信息。如果此时能看到弹窗提示,就可以定位到问题的原因。不过,客户表示并没有看到弹窗弹出。从这个现象我们可以知道,调用app时,SDK并没有对传入的URL进行处理。可能的原因有:app的回调函数中没有调用神策SDK的方法对url进行处理;App的回调函数是通过SensorsSDK方法调用的比较晚,URL是通过其他进程处理的;有多个调用App的回调方法,客户使用的方法优先级较低。分析到这里,让客户截图看看这个URL是怎么处理的。代码如下:-(BOOL)application:(UIApplication*)appopenURL:(NSURL*)urloptions:(NSDictionary*)options{if([[SensorsAnalyticsSDKsharedInstance]handleSchemeUrl:url]){返回是;}returnNO;}客户的代码没有问题,所以排除前两种可能。现在最有可能的原因是回调函数没有执行,通过断点调试验证了这个猜想。原因是使用SceneDelegate时,调用App时会先执行SceneDelegate中的-scene:openURLContexts:方法。所以建议客户将处理URL的逻辑移到SceneDelegate中处理。如此调整后,重新测试,点击分析,终于连接成功。现在问题终于解决了!3.6.还是有问题。然而,事故还是时有发生。虽然连接成功了,但是客户端出现了新的问题:点击分析页面没有热力图,就像投屏工具一样,看不到数据。为什么会这样?前面我们介绍点击分析的时候就知道,点击分析会根据点击次数呈现不同的颜色。点击次数越多,颜色越深。但是,现在不呈现点击图。根本原因是没有统计点击次数。可能的原因是:没有点击操作;未启用全埋点击事件;iOSSDK版本与神策分析版本不匹配。以上第三点一开始就和客户确认过,可以排除;第一点,已经和客户确认过,测试的时候点击了按钮,所以也可以排除;最有可能的原因是全埋没开启Click事件,不过这个也和客户确认过了,所以也可以排除。问题似乎陷入僵局。就在走投无路的时候,发现客户的代码截图中有RCTRootView的相关代码,说明该项目是使用ReactNative开发的。在ReactNative项目中,点击事件采集需要集成react-native-sensors-analytics插件[3]。简单的说,只有集成了这个插件,才能在ReactNative项目中自动采集点击事件。与客户沟通后,确实是使用ReactNative开发的项目,并没有集成react-native-sensors-analytics插件。终于,找到了这个谜题的答案。3.7.终于解决了给客户提供如何集成react-native-sensors-analytics插件的步骤。经过测试,期待已久的点击分析热图终于呈现在客户面前。至此,问题终于彻底解决了。4.总结刚开始收到客户反馈的时候,我以为是个简单的问题,没想到几经周折就解决了。回顾这次解题经历,我的主要收获有:无论问题大小,都要坚持到底;遇到突发情况,要认真对待,不轻易放过任何一个细节;在解决一个问题的时候,我们不妨大胆假设,谨慎论证。希望与大家分享。5.参考文献[1]https://manual.sensorsdata.cn...[2]https://manual.sensorsdata.cn...[3]https://github.com/sensorsdat...文章来自公众号——感官科技社区