美文网首页
严谨写代码态度的养成

严谨写代码态度的养成

作者: LD_左岸 | 来源:发表于2018-07-06 09:55 被阅读33次

前提应用场景非常简单

  • WKWebView加载前端写好的H5的链接
    由于H5这块采用的是Vue.js所有我们之前的js调用OC的方式
 WKUserContentController *userCC = config.userContentController;
 //JS调用OC 添加处理脚本
 [userCC addScriptMessageHandler:[[WeakScriptMessageDelegate alloc] initWithDelegate:self] name:@"iosAnswer"];

//JS调OC----->OC里调用JS的方法 既能把JS的方法改掉 又能把JS的参数传递过来
- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {
    if ([message.name isEqualToString:@"iosAnswer"]) {
    
}

- (void)dealloc
{
     [self.webView.configuration.userContentController removeScriptMessageHandlerForName:@"iosAnswer"];
}
  • 这么好用的方式不行了 所以我和前端这块约定的是采用另外一种JS调用OC的方式 也就是
// 在发送请求之前,决定是否跳转
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{
    //decisionHandler(WKNavigationActionPolicyAllow);
    NSURL * URL = navigationAction.request.URL;
    if ([URL.absoluteString hasPrefix:@"iosAnswer"]) {
}

通过上述方式来实现JS调用OC的
看起来并无任何问题 然而问题就出在细节上 此处与本文题目暗暗想合了.....

先介绍下问题的现象 很奇怪 让人一时丈二脑袋摸不到头脑

  • 总的一句话概括就是 一下这个方法不执行
// 页面加载完成之后调用
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{
}

以下两个方法都执行

// 页面开始加载时调用
- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation{
    [MBProgressHUD showMessage:@"加载中"];
    
}
// 当内容开始返回时调用
- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation{
    [MBProgressHUD hideHUD];
}

这个问题在开发过程中遇见过一次 当时也没在意 感觉这个方法类似于系统的回调事件 这我也不好干预不是 当时就忽略了下手机的wifi🈶重新连接了下wifi就好了 所以当时也没当回事
开发遇见没当回事啊
长期的测试过程中一直是链接的内网ip也一直没出现过 这个加载完的代理不回调的事情
涉及到的机型

  • iPhoneX 11.4 iphone7 10.2 iphone6plus 11.2 11.4 iphone8 11.4 iPhone6 11.4 都没出现问题

马上发布阶段换成公网的域名的 开始最后阶段测试时
首先 iPhoneX 11.4 出问题了

# 以下方法基本不执行 (95%的情况下<不执行> 5%的情况下<执行>)
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{
}
  • 立马测别的测试机 都OK
  • 大概连测了半个多小时(期间我一直在百度X为啥不行)
  • 半小时连续测试后 测试的跑来告我iPhone6 11.4也不行了
  • 我继续百度 11.4 为啥不执行
  • 统统无果 (最多有点相关信息的是WK的代理没设置 或者别的操作把代理覆盖掉了 然而我确定 我的并不是这个原因)

最终我检查了一遍代码之后 把怀疑的目光聚焦在了这个代理回调上

  • 代码如下
// 在发送请求之前,决定是否跳转
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{
    decisionHandler(WKNavigationActionPolicyAllow);
    NSURL * URL = navigationAction.request.URL;
    if ([URL.absoluteString hasPrefix:@"iosAnswer1"]) {
         xxxxx
   }

    if ([URL.absoluteString hasPrefix:@"iosAnswer2"]) {
         yyyy
   }

    if ([URL.absoluteString hasPrefix:@"iosAnswer3"]) {
         zzzz
   }
   }
  • 改成这样后 问题解决
// 在发送请求之前,决定是否跳转
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{
    
    NSURL * URL = navigationAction.request.URL;
    if ([URL.absoluteString hasPrefix:@"iosAnswer1"]) {
         xxxxx
        decisionHandler(WKNavigationActionPolicyCancel);
   } else

    if ([URL.absoluteString hasPrefix:@"iosAnswer2"]) {
         yyyy
        decisionHandler(WKNavigationActionPolicyCancel);
   } else

    if ([URL.absoluteString hasPrefix:@"iosAnswer3"]) {
         zzzz
         decisionHandler(WKNavigationActionPolicyCancel);
   } else
   {
        decisionHandler(WKNavigationActionPolicyAllow);
   }

另外一件不严谨的事儿

  • 公司的企业级账号 在配置证书的时候 发现发布证书在有效期内 所以就没创建新的发布证书
  • 然后导出P12给其他同事用时 发现P12文件不能被导出 是置为灰色的
  • 同时🔑串里安装的证书也不是能被展开的
  • 后来一想 原来是已存在的证书 包含的不是我本机的CSR文件 天了噜😝

鉴于能力有限 水平一般 理解有误之处 深望不吝指出 阿门

相关文章

  • 严谨写代码态度的养成

    前提应用场景非常简单 WKWebView加载前端写好的H5的链接由于H5这块采用的是Vue.js所有我们之前的js...

  • 严谨的态度

    参加一个蒙氏助教课程,莫名的被组织方的严谨工作风格所击中。 每天早晚和中午休息时间打卡,上课前就手签,如果要取得证...

  • 严谨的态度20220117

    今天工作中,做一件事反反复复去做,总是会有某一个部分存在问题,然后不断将流程打回给我去做。 在这样反复多次之后,我...

  • 散淡之人,就没有必要整天端着架子

    人总有退下来的时候,该散淡就散淡,不要太严谨。也许是长期的习惯养成了严谨的态度,需要时间适应新的环境。散淡状态也没...

  • 《清酒之魂》听书笔记

    一、三位贵人 出色的杜氏习得正确的酿酒态度。从小听到杜氏们经验之谈,长大后如何用人起了作用。 养成严谨负责的态度,...

  • 《清酒之魂》听书笔记

    一、三位贵人 出色的杜氏习得正确的酿酒态度。从小听到杜氏们经验之谈,长大后如何用人起了作用。 养成严谨负责的态度,...

  • 9.10节日快乐!

    出生在书香门第, 教师之家, 实属幸运, 学习、生活中的耳濡目染, 养成了本分,严谨的生活态度, 这是最宝贵的财富...

  • 以严谨的态度修身

    自古以来,凡经得起历史考验的伟大事业,都是在恶劣的环境中做出来的。任何一个时代,做好事都有难度;做坏事倒很顺利。从...

  • 态度严谨人气高

    DS16°C私房米线是深受小吃达人喜爱的一种健康小吃,健康美味,营养丰富,赢得广大群众欢迎。我们对于原材料的选择都...

  • 2018 11 16

    慢慢纠正自己养成的写代码时的坏习惯

网友评论

      本文标题:严谨写代码态度的养成

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