0%

在使用Apicloud的时候遇到的一些问题:

  1. 如何避免 openWin() 的黑屏问题
    两种解决方式

    1. openWin() 参数中设置 bgColor:'#fff'
    2. config.xml 中设置 appBackgroundwindowBackground 的值为 #fff;(当然您也可以顺手将,frameBackgroundColor 的值设置为 #fff,解决某些情况下 frame 也黑屏的问题)
      当然以上黑屏问题就变成了白屏问题,😂哈哈哈。
  2. 少量持久化信息的存储
    持久化信息的存储,在 Apicloud 中给了明确的说明 也提供了三个方法来解决添加,获取,删除的问题。见以下代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    // 存储持久化数据
    api.setPrefs({
    key: 'userName',
    value: 'api'
    });
    // 获取持久化数据 只用同步就好了,因为大部分时候我们都是要同步获取数据来用的;异步还是要根据实际应用场景来选择使用,不建议用。
    //同步返回结果:
    var userName = api.getPrefs({
    sync: true,
    key: 'userName'
    });
    //删除持久化数据
    api.removePrefs({
    key: 'userName'
    });

    通过以上的三个方法可以解决用户登陆态的基本问题,但是有时候我们会遇到,明明已经设定了 prefs 为什么获取的时候获取不到?我猜测有两个方面:

    1. UIWebViewWKWebView中混用,这是最常见的问题。
    2. 在设置的时候,窗口销毁。导致操作未完成。
      针对第一种情况,我们不需要做特殊处理,就是将原来设定的 framewindow 中的属性 useWKWebView 这里保留默认就好了。 苹果公司在 2020 年 4 月 20 日回将 UIWebview设置内部 API ,所以这里默认就是使用了 WKWebview
      针对第二种情况,一般就是数据量较大,需要更换为 fs 或者 db 等方式处理数据。
      对于另一对方法 setGlobalDatagetGlobalData ,如果您的应用只需要当次打开用,退出应用后不记录任何状态,那么可以使用。这两个方法是记录临时数据的。
  3. 关闭到某个窗口 api.closeToWin({name:'root'})
    如果是使用 apicloud 云端打包,默认窗口的名字是 root,这样有利于我们快速返回首页。

  4. 关于窗口交互 记住当存在一个窗口打开或者关闭操作时,其他的窗口的打开或者关闭指令是被忽略的,窗口关闭打开的交互时间延迟至少要 800ms 之前试过 500ms 不起作用,有兴趣的可以亲自去测试这个问题。

  5. 关于 tabBar 的监听,如何确认使用的事件是对的?

    1. 针对 tabitembtn 的事件监听,是用来确认点击某个按钮后,是否要执行页面展示操作。比如我们有一个页面登陆后才能看到,那么就可以用这个事件来监听登陆态是否存在,存在则打开页面,不存在则停止操作(或者打开登陆页面)
    2. 针对 tabframe 的事件监听,有两个方式回出发此事件,第一个是点击 tabBar ,第二个是左右划屏(这个需要在调用 openTabLayout 时设置 tabBarscrollEnabled 属性为 true)。 这种时候也可以通过这个判断登陆态 ,如果未登陆则 通过 方法 api.setTabBarAttr({index: 1});来让用户返回首页或者某个不需要登陆的页面。同样 这个方法还可以用于处理 navigationBar 的按钮问题,尤其是在 tabBar 不同的页面左上角和右上角有不同的按钮和触发事件的时候。
  6. 针对没有 tabBar 的页面 需要处理底部沉浸式问题,在适当的 div 或者 body 标签上要增加样式 document.querySelector('body').style.paddingBottom = api.safeArea.bottom;如果本来就有那么需要在原基础上增加。

  7. 针对没有 navigationBar 的需要处理顶部沉浸式问题,在适当的 div 或者 body 标签上要增加样式 document.querySelector('body').style.paddingTop = api.safeArea.top; 如果本来就有那么需要在原基础上增加。

最近在使用钉钉机器人进行消息通知 以确保 异常得到及时解决
但是遇到问题 大体代码如下 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
$content =[];
/**
* @param $message
* @param bool $force 10条强制发送
*/
function sendDingdingMarkdown($message, $force = false)
{
global $content;
$web_hook = 'https://oapi.dingtalk.com/robot/send?access_token=xxxx';
$robot = new DingDingRobot($web_hook);

if ($force) {
$content[] = $message;
dump('强制发送消息');
$textData = "\n" . ' > ' . implode("\n " . '>', $content);
$content = [];
dump('强制发送消息', $textData);
$returnData = $robot->setMarkdownType()->setContent([
'title' => '汇总消息',
'text' => $textData
])->send();
} else {
if (count($content) > 10) {
$textData = "\n" . ' > ' . implode("\n " . '>', $content);
dump('大于30正常发送', $textData);
$content = [];
$returnData = $robot->setMarkdownType()->setContent([
'title' => '汇总消息',
'text' => $textData
])->send();
} else {
$content[] = $message;
}
}
if(isset($returnData)) {
dump('钉钉消息发送结果', $returnData);
}

}
Read more »

这篇文章有点水,记录的目的是为了提醒自己,在 pecl 安装 PHP 扩展的时候是遇到的问题

增加参数方式

pecl install swoole 可以设置项目后使用参数

1
2
3
4
enable sockets supports? [no] : yes
enable openssl support? [no] : yes --with-openssl-dir=/usr/local/include/openssl
enable http2 support? [no] : yes
enable mysqlnd support? [no] : yes
Read more »

MacOS X使用php程序访问sqlsrv需要对环境进行以下处理

  1. 安装homebrew不赘述
  2. 添加sqlsrv的工具包
    1
    2
    3
    brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
    brew update
    brew install msodbcsql17 mssql-tools
  3. 安装php扩展
    1
    2
    pecl install sqlsrv
    pecl install pdo_sqlsrv

最近 发现 gitee.com 也跟github.com一样开始使用gpg提交验证了
折腾了好久发现自己的commit也没有绿图标 怎么弄啊于是研究了下发现 如果使用gpg suite应该超简单

首先安装

1
brew cask install gpg-suite

安装完成后
执行

1
gpg --full-generate-key
Read more »

本文是ios开发的学习及开发笔记 不定时更新 by 一个没入门的ios小白
  1. 关于window

    在使用singleview方式来创建项目的时候,发现 仅能在`appdelegate.m`中使用`self.window.rootViewController`是指根控制器,然后使用`[self.window makeKeyAndVisible];` 将窗口显示出来
    关于 info.plist的 字典  Main storyboard file base name  这里当设置为空时,有时候会黑屏 即便`[self.window makeKeyAndVisible];`  将指定的根控制器显示出来。
  2. 自定义启动文件
    今天看 apicloud的模块开发代码,发现他讲默认的appdelegate 进行了自定义

    1
    2
    3
    4
    5
    6
    #import <UIKit/UIKit.h>
    int main(int argc, char * argv[]) {
    @autoreleasepool {
    return UIApplicationMain(argc, argv, nil, @"UZAppDelegate");
    }
    }

    对比 xcode 10 默认生成的main.m文件

    1
    2
    3
    4
    5
    6
    7
     #import <UIKit/UIKit.h>
    #import "AppDelegate.h"
    int main(int argc, char * argv[]) {
    @autoreleasepool {
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
    }

    我们可以看出来 NSStringFromClass([AppDelegate class])其实就是@"AppDelegate" 也就是 指定启动文件了。

  3. 关于打包静态库
    注意因为终端的shell显示设置 下面的➜ Products ➜Release-iphonesimulator➜ Release-iphoneos是指的编译成功后 liblaunchModel.a所在的相关目录

    ➜  Products lipo -create Release-iphoneos/liblaunchModule.a Release-iphonesimulator/liblaunchModule_simulator.a -output liblaunchModule.a
    ➜  Products lipo -info liblaunchModule.a
    Architectures in the fat file: liblaunchModule.a are: x86_64 arm64
Read more »

cookies

cookie 是服务端存放在客户端的一个小东西,用于识别信息,或者暂存信息。一般用于多页面,多域名交互

session

session 是服务端存放在服务端的一个东西,用于识别共同信息。一般用于同一站点识别用户信息,保存用户信息。

用户会话的保持离不开 cookies 和 session,这个前提是web 访问下。但是对于当前移动环境下,cookies 和 sesssion 成了一个瓶颈。

Read more »

最近使用hbuildx打包 uniapp 总是失败,而且没有提示失败原因,浏览官方发现官方是有离线打包指导的,所以本文以文字版记载一次离线打包所遇到的问题。

Read more »

在这篇文章名字中使用优秀是经过我这两天研究后决定的。
原因是我在使用了这么多年的oop后再见到function的惊讶。

正如我在一开始入门编程时,仅会用 html 后来半推半就的了解了点 asp,第一次看到别人的 asp 代码用了函数定义一样。
我也不知道文章会如何分,在未完成之前就随手记吧。

通过对入口文件分析来说说 oop函数式 的不同

Read more »

近期在使用 uniapp,但是并没后搞懂他是如何将小程序的组件应用再 uniapp 中的。
这个问题是我在使用了 vant 的小程序组件(vant-weapp)后发现的。

Read more »