IOS10.0+, Android 6.0+系统升级后Hybird应用常见问题修复

移动操作系统,每年会有一个大版本的发布,对部分功能多少会有影响,最近由于苹果发布了IOS10,以及android .6系统的普及,导致部分项目无法正常运转,尝试了一番,解决了所有问题,为此记录一下,方便同样问题的同志及时解决掉。

IOS10升级后的问题

其实自从IOS9+以后, iphone平台变化还是挺大的,可能这里列举不是很全,算是参考吧!

HTTPS协议

IOS9以后要求所有的app都要尊崇https协议,以及ipv6服务标准。

对此最好的解决方案就是,更改服务的协议到https。

还有一种方案就是需要配置NSAppTransportSecurity。

也可以对指定的url添加白名单:


从2017年1月1日起,,所有新提交的 app 默认不允许使用NSAllowsArbitraryLoads来绕过ATS的限制,默认情况下你的 app 可以访问加密足够强的(TLS V1.2以上)HTTPS内容。

可以选择使用NSExceptionDomains设置白名单的方式对特定的域名开放HTTP内容来通过审核,比如说你的应用集成了第三方的登录分享SDK,可以通过这种方式来做。

更多的配置:

NSAllowsArbitraryLoads - 设置 true 即支持所有 HTTP 请求

NSExceptionDomains - 添加白名单

NSExceptionMinimumTLSVersion - 白名单指定域名支持的 TLS 版本

NSExceptionRequiresForwardSecrecy - 白名单指定域名是否支持 Forward Secrecy

NSExceptionAllowsInsecureHTTPLoads - 白名单指定域名禁用 ATS

NSThirdPartyExceptionMinimumTLSVersion - 白名单指定第三方服务域名最低支持的 TLS 版本

NSThirdPartyExceptionRequiresForwardSecrecy - 白名单指定第三方服务域名是否支持 Forward Secrecy

NSThirdPartyExceptionAllowsInsecureHTTPLoads - 白名单指定第三方域名禁用 ATS

配置白名单针对第三方应用

如果你的应用需要打开或者检查本地是否安装了指定的app,就需要配置一个LSApplicationQueriesSchemes, 这样才可以成功调用支付,或者地图等应用。

比如下面这个设置,是针对于百度地图的:


配置description针对用户使用权限

在升级ios10以后,发现调用相机或者相册等权限时,发现闪退现象。

查找一番需要配置description, 如下:


大概统计了一下需要加的一些字段列在下面:

NSContactsUsageDescription -> 通讯录

NSMicrophoneUsageDescription -> 麦克风

NSPhotoLibraryUsageDescription -> 相册

NSCameraUsageDescription -> 相机

NSLocationAlwaysUsageDescription -> 地理位置

NSLocationWhenInUseUsageDescription -> 地理位置

配置allow-intent

做H5的同学都知道,可以通过h5调用系统打电话功能,比如:


发现在ios10上不起作用,查找一番需要配置allow-intent, 这个要在混合应用的config.xml中进行配置:


再次尝试一下,OK了!

cordova加载html 页面,出现白屏

当升级系统过,返现之前的app打开后出现白屏现象,于此同时后台没有任何错误,找了很久没有发现问题,猜想是不是因为平台版本太老的原因:

于是,升级了一下ios-platorm 到4.0版本,因为之前用的都是3.X.

再次运行,可以看到页面,但是还又一些小问题,比如布局错乱等问题。

在对JS Library做了一次升级,全部升级到latest版本,保证代码的可运行状态。

这次终于正常了,一切ok.

这里建议大家一定要到平台版本及时更新,以保证对系统webkit做最好的支持。

现在最新的是:

ios-platform 4.2

android-platform 5.2

推送通知

iOS10以后,想要正常收到推送通知,需要进行额外的配置:


字体改变

iOS10的字体发生了变化,这导致一些文字在原有的宽高约束下可能会出现显示不完整或者留白的情况,需要逐一检查。

Android

相比较而言Android变化影响会小一些,但是同样会存在问题。

需要升级到最新的platform

保证我们自定插件能得到更多的api支持以及webkit更好的支持。

权限配置

自android6.0以后,android对权限的要求和ios十分相似,要求用户手动授权是否允许应用使用该权限。

对于Android来讲,主要有两种权限,一个是正常权限,比如网络。还有一个危险权限,比如相册,相机,联系人等等,都需要用户授权。

我们所要关注的就是危险权限,这些权限会被分为不同的权限组(PermissionGroup),这里需要说明一下,当一个权限组里的任一权限被授权,这个组里的其他权限也都会被授权,比如:READ_EXTERNAL_STORAGE这个读SD卡的权限被授权了,这时候WRITE_EXTERNAL_STORAGE也同时被授权。

具体实现方案比如:

权限的检查:

if(ContextCompat.checkSelfPermission(thisActivity,Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {

}else{

// }

这里涉及到一个API,ContextCompat.checkSelfPermission,主要用于检测某个权限是否已经被授予,方法返回值为PackageManager.PERMISSION_DENIED或者PackageManager.PERMISSION_GRANTED。当返回DENIED就需要进行申请授权了。

申请权限:

ActivityCompat.requestPermissions(thisActivity,newString[]{Manifest.permission.READ_CONTACTS},MY_PERMISSIONS_REQUEST_READ_CONTACTS);

该方法是异步的,第一个参数是Context;第二个参数是需要申请的权限的字符串数组;第三个参数为requestCode,主要用于回调的时候检测。可以从方法名requestPermissions以及第二个参数看出,是支持一次性申请多个权限的,系统会通过对话框逐一询问用户是否授权。

处理权限申请回调:

@Override

public voidonRequestPermissionsResult(intrequestCode, String permissions[], int[]grantResults)

{

switch (requestCode) {

caseMY_PERMISSIONS_REQUEST_READ_CONTACTS: { /

/ If request is cancelled, the result arrays areempty.

if(grantResults.length>0&&grantResults[0] ==PackageManager.PERMISSION_GRANTED) { /

/ permission was granted, yay! Do the //contacts-related task you need to do. } else {

// permission denied, boo! Disable the //functionality that depends on this permission.

} return; }

}

}

对于混合应用,我们可以安装一个插件来替代:


这个插件是针对于android 平台的:

使用如下:


Normal Permissions如下:

ACCESS_LOCATION_EXTRA_COMMANDS READ_SYNC_SETTINGS

ACCESS_NETWORK_STATE READ_SYNC_STATS

ACCESS_NOTIFICATION_POLICY RECEIVE_BOOT_COMPLETED

ACCESS_WIFI_STATE REORDER_TASKS

BLUETOOTH REQUEST_INSTALL_PACKAGES

BLUETOOTH_ADMIN SET_TIME_ZONE

BROADCAST_STICKY SET_WALLPAPER

CHANGE_NETWORK_STATE SET_WALLPAPER_HINTS

CHANGE_WIFI_MULTICAST_STATE TRANSMIT_IR

CHANGE_WIFI_STATE USE_FINGERPRINT

DISABLE_KEYGUARD VIBRATE

EXPAND_STATUS_BAR WAKE_LOCK

GET_PACKAGE_SIZE WRITE_SYNC_SETTINGS

INTERNET SET_ALARM

KILL_BACKGROUND_PROCESSES INSTALL_SHORTCUT

MODIFY_AUDIO_SETTINGS UNINSTALL_SHORTCUT

NFC

DangerousPermissions如下:

Permission Group Permissions

CALENDAR

READ_CALENDAR

WRITE_CALENDAR

CAMERA

CAMERA

CONTACTS

READ_CONTACTS

WRITE_CONTACTS

GET_ACCOUNTS

LOCATION

ACCESS_FINE_LOCATION

ACCESS_COARSE_LOCATION

MICROPHONE

RECORD_AUDIO

PHONE

READ_PHONE_STATE

CALL_PHONE

READ_CALL_LOG

WRITE_CALL_LOG

ADD_VOICEMAIL

USE_SIP

PROCESS_OUTGOING_CALLS

SENSORS

BODY_SENSORS

SMS

SEND_SMS

RECEIVE_SMS

READ_SMS

RECEIVE_WAP_PUSH

RECEIVE_MMS

STORAGE

READ_EXTERNAL_STORAGE

WRITE_EXTERNAL_STORAGE

Cordova6.0+新特性

cordova的特性不是很多,主要是版本支持,但是有一点需要我们注意。

对于插件安装的发布,升级后可以指定默认版本对于cordova, 这也就意味着,我们在执行:


可能不会获取到最新版本的插件。

但是可以通过如下方法获取:


上图为2017年最新的视频教程资料,搜索2352149755加我好友私聊我上传视频教程,有什么不懂的也可以来私聊问我。

不定时更新中。

如果你能明白这些视频资料的好差,那么你也算是入行了,底层和中高层就是这一步之差。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,378评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,356评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,702评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,259评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,263评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,036评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,349评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,979评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,469评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,938评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,059评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,703评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,257评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,262评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,501评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,792评论 2 345

推荐阅读更多精彩内容