微信WebView会话时长

主要想测试下微信里面的会话cookie的实际作用时间是多久。

一般浏览器的会话cookie,是当浏览器退出后,会话cookie即失效。

猜想微信的会话cookie,应该是退出网页后失效。

但实际测试结果,却并非如此,微信会一直保留这个会话cookie,直到微信进程退出。

从WebView返回微信主界面 cookie不失效
返回手机系统主界面 cookie不失效
后台关闭微信进程 cookie失效
微信切换账号 cookie失效

测试设备:

  • iOS9 – 微信6.3.6
  • Android 4.4.2 – 微信6.3.5

当然,估计还和手机内存有关,内存小的机型,这部分临时存储就会被系统释放掉。

附:测试地址

给iOS的WebView添加远程调试

2015-01-16更新:

最新版Cordova默认已经开启了远程调试,只要是通过Xcode来安装到设备上面的应用,都可以在Safari设置里面打开远程调试。而release出来ipa之后,则无法再使用远程调试,这个可能也是为了安全因素吧。


在Xcode中找到AppDelegate.m文件

定位到 didFinishLaunchingWithOptions 代码块中。

添加如下代码:

此时Xcode会报错,提示

no known class method for selector ‘_enableRemoteInspector

错误原因是该方法是iOS的一个私有API,从iOS5开始,Xcode项目新增了Automatic Reference Counting检查项,我们只需要关闭它,就可以正常编译了。

在工程属性中 -》 Build Settings -》 Object-C Automatic Reference Counting,将其设置为No即可。

套壳

phonegap已经不再是phonegap,而是phonegap build,用来打包的。

以前phonegap中,用来JS与native通信的模块,现在叫做cordova,也就是现在要套壳的话,是套cordova。

安装

坑一:公司内网,公司内网npm镜像会遇到部位外链依赖下载不了。

坑二:部分npm包在安装的时候需要编译,Mac默认没有安装编译器(如Linux的GCC),需要手动安装Xcode Command Line Tools。

坑三:用外网吧,内网无形中增加各种bug。

初始化项目

此时,helloWorld目录下面,会有www目录,将我们的页面放到该目录中,并在页面中引入cordova.js

编译cordova,生成Xcode的项目

两个命令的区别在于:

prepare,在Xcode里面需要再build,才能运行。

build,在Xcode中不需要再build,可直接运行。

此时在helloWorld/platforms/ios里面,就有了我们iOS的项目代码,此时可以直接Xcode打开,并编译运行,有证书的还可以真机运行测试。

调用二维码插件

https://github.com/wildabeast/BarcodeScanner

安装插件的方式,在终端里面,输入

然后重新执行一次cordova的编译

这个时候,在页面中,就可以通过如下方式调用扫描二维码功能了。

使用插件注意事项

1、cordova.js文件必须置于cordova生成的www目录下面。

2、 cordova plugin add 方式安装完插件后,cordova_plugin.js的内容会变成我们插件的相关依赖(例如这里会变成AMD的方式声明依赖barcodeScanner.js文件)。

3、我们不需要在页面写明引入cordova_plugin.js和barcodeScanner.js。只需要再执行 cordova prepare 一次,cordova.js会自动引入cordova_plugin.js到页面中,并将相关插件(barcodeScanner.js)引入到页面中。