2019年苹果包问题总结

2019年苹果包问题总结

苹果包现状

  1. 2018年,由于苹果进行棋牌游戏审核,对公司提交的苹果包进行审核,发现提审过大量类型的应用,下架了公司所有appstore包。
  2. 由于appstore包被封,所属的苹果开发者账号也被封了,无法打出旧包名的包进行测试。
  3. 重新提审appstore包,棋牌游戏基本上提不过去,采用马甲包的方式,也没有通过。
  4. 2019年,各个棋牌公司大都采用企业签的方式来维持苹果用户,企业账号价格飞涨。随着时间的推移,越来越多的苹果企业签被封,企业签越来越难签。并且签了之后,经常被封,企业签每次被封后,玩家需要重新下载,影响玩家体验。
  5. appstore包是一个2017年初提审的苹果包,包体支持ipv6的网络,但是并未对虚拟的ipv6(::ffff:开头的)做处理。

对策

  1. appstore包被下架后,采用了企业签的方式提供给玩家进行游戏,企业签需要找第三方进行签注和更换包名。
  2. 导出包后,修改包名,通过测试账号安装测试。
  3. 登录以前的账号,发现以前开发者账号下提审通过待上架的包重新出来了(可能是苹果规则筛选问题),将以前的包更新成最新的包。

修改包名

已经在另外一篇印象笔记中描述了
标题:苹果包重新签名

落地页下载ios包的配置

已经在另外一篇印象笔记中描述了
标题:ios企业签落地页配置

ios企业签包无法登录的问题

  1. 不能登录问题
    突然爆发大面积苹果用户登录不上,appstore包和企业签包,但是安卓包没有问题
    对玩家日志进行分析,发现不能登录的玩家通过域名解析出来的IP是ipv6的,但是服务器并不支持ipv6,并且解析出来的ipv6的虚拟的ipv6,前缀为::ffff:这种。
    解决方式:
    1. 修改代码,将解析出来的ip进行修改,去掉::ffff:前缀,改成ipv4的IP进行登录
    2. 服务器增加ipv6的域名解析
    3. 采用阿里的httpdns进行dns解析。加快解析速度
  2. 频繁提示网络弱,断线重连问题依旧
    解决方式:
    1. 经过排查是因为域名做了dns动态加速,导致心跳包被阿里优化,前几次心跳被合并,导致心跳没收到出发网络弱及掉线。
    2. 加大心跳的时间间隔

将商城包更新到最新的包

部署服务器
  1. 服务器代码找不到了,服务端重写了一个用于验证登录的服务器,对登录玩家的ip进行限制,根据ip设置白名单,用于白名单更新。
客户端
  1. 根据之前留下来的表格,一个个试验出服务器的IP地址和端口
  2. 配置更新包上传到oss上,用于测试更新
增加appstore包的渠道统计

增加每个包的渠道统计,了解玩家的分布

修改横竖版界面

由于提审时所有的包都提的是横版,而我们的游戏很多是竖版,导致界面有问题

  1. 将原本竖版的游戏改为横版
    最初的时候开发游戏都是维护2个版本,横竖版都需要维护。将以前的横版更新成最新的,进行修改后提交上线。
  2. 游戏还是采用竖版界面,但是将界面进行修改,改成横版
    a. 将所有的界面进行重新排版,制作成横版(修改成本和维护成本太大,后来放弃)
    b. 采用代码将大厅内的所有界面进行调整
    调整方式: 代码新创建一个panel,将原本root节点上面的界面全部copy到新的节点上,然后将界面进行旋转90度,再做偏移处理。
    这样做的结果是,大大减少了修改成本,所有包都通用,界面不需要做2套,维护简单。
兼容处理
  1. 提审的包不支持底层的复制功能,
    兼容: appstore包屏蔽掉,后面采用拉起网页,让数据传入,玩家通过点页面上的按钮实现复制文字功能。
  2. Toast和通用弹窗界面并没有转变过来,
    兼容:修改函数传入形参修改。让界面能够正常转过来。
  3. 更新之后大小屏的问题,发现是更新后屏幕的宽高获取反了,导致大界面下面叠了一个横着的小界面。
    修复:通过获取正确的宽高,解决了这个问题
  4. appstore包无法分享,
    兼容:通过拉起分享时,将包名写死成其它可以正常分享的包名达到拉起分享的目的。(ios分享包名和appid感觉不需要对应)
  5. 无法接入闲聊SDK,
    兼容:通过网页,将截图加载到网页上,然后提示玩家长按复制,点击按钮分享到微信/闲聊

appstore包无法登录的问题

反馈无法登录更新

appstore包反馈无法登录更新,主要地区为安徽淮北地区,但是自己测试,无法复现出来。
iphones手机在旧版本的时候不支持ipv4/ipv6的解析,只支持单ipv4,升级12.1之后开启
由于appstore包工程和代码已经找不到了,无法调试,根据企业签的包无法登录的情况,判断可能是因为解析出了虚拟ipv6地址所致。
采用不同的ip进行测试:
纯ipv4:能够正常登陆和更新
纯ipv6:能够正常登陆和更新
虚拟ipv6:“::ffff:”+ipv4 无法登录
根据测试结果,判断是因为服务器没有增加ipv6的解析能力,导致运行商解析出来了“::ffff:”的虚拟ipv6,导致登录不上。
于是联系阿里,了解到可以购买ipv6的域名解析能力,得到纯ipv6。

增加域名ipv6的解析

增加域名ipv6的解析后,还是又许多玩家无法登录。

工具和测试方法的收集

每次企业签包被封后,玩家就会大量下载appstore的包,反馈过来登录不上
收集到的比较有用的工具和测试网址:

  1. ipv6测试网址:http://test-ipv6.com/
    功能:可以判断当前网络是否能够访问纯ipv6,DNS服务器是否具备ipv6的解析能力等信息。
  2. i Net Tools
    功能:ping、路由等信息
  3. Best NetTools(上面软件的加强版)
    功能:ping、路由、Network Info等
出差计划

一个多月以来,只要企业签挂了,就有玩家来反馈appstore包无法登录、更新。已经到了必须解决的时候了。
根据上级安排,派遣我去淮北地区出差。

出差前的准备
  1. 苹果电脑、苹果手机准备
    提申请,领mac和iphone
  2. xcode打包环境安装
    a. 更新mac系统
    b. 下载xcode
    c. 拷贝现有工程,修改打包中的报错,具体环境配置查看笔记:Mac安装cocos2d quick工程环境
  3. 将登录代码好好过一下,必要的地方增加打印
    对现在最新的代码进行修改,发现改动量太大了,而且结构都发生了变化,最后选择一份找到的同时期的代码来进行测试。
    对底层代码进行阅读,发现了一些问题和疑点
    问题:
    1. 原有的旧代码没有断线重连机制,没有超时提示。
    2. 就算是没有网络的情况下,也会一直转圈,不会有任何提示。
      如果解析到ipv6的ip,会采用ipv6的方式去进行socket的链接。
      这个地方产生了疑点:
      a. iphone旧版本默认没开启ipv6的解析
      b. 采用单ipv4、单ipv6、ipv4/ipv6的网络,看看结果
  4. 模拟单ipv4、单ipv6、ipv4/ipv6的网络
    安卓手机自始至终没有出现过无法登录的情况
    安卓手机默认是开启了ipv4/ipv6的网络
    通过配置安卓手机的APN,对网络进行设置,可以模拟出各种网络环境
  5. 根据模拟的网络进行测试
    将热点分别设为单ipv4、单ipv6、ipv4/ipv6的网络
    单ipv4:正常登陆,正常更新
    单ipv6:正常登陆,无法更新
    ipv4/ipv6:正常登陆,正常更新
    上述测试并没有复现出来玩家的问题
  6. xcode调试域名解析的结果
    单ipv4:解析出来是ipv4的地址
    单ipv6:解析出来是ipv6的地址
    ipv4/ipv6:ipv4和ipv6的地址都有
    根据5、6的测试结果及代码优先采用ipv6进行连接进行分析,得出以下结论:
    1. 单ipv4能够正常登陆和更新
    2. 单ipv6只能登陆,无法更新,推断是oss地址不支持ipv6
  7. 通过强行修改代码进行测试
    1. 注释掉ipv6链接的代码,默认采用ipv4的方式链接
      结果:无法登录,ip是ipv6的
    2. 单ipv4的网络,采用ipv6的方式去连接
      结果:无法登录
  8. 联系无法登录的玩家,预约时间去找玩家了解情况
    根据上面的测试结果,得到了一个待确认的问题:
    玩家是否是因为解析了ipv4、ipv6的IP,但是自身网络又不支持ipv6,采用了ipv6的方式去登录。
出差到当地实际查看

到达合肥机场后,马上进行了测试,复现了玩家转圈的那种情况。并且手机系统是新版的。验证了之前的猜测。
以下为测试的所有过程

测试时间:9月23日 9:00

安卓手机开热点:

单IPV4模式:
游戏包复现一直转圈的问题,
插电脑调试,发现单ipv4模式下也会解析出ipv4和ipv6的地址,
当ipv4和ipv6同时存在的情况下,会用ipv6去连接,但是网络环境是ipv4,无法连接上

单ipv6模式:
游戏包能够连接上,收到下载,但是下载不了
插电脑调试,发现单ipv6模式下也会解析出ipv4和ipv6的地址,
当ipv4和ipv6同时存在的情况下,会用ipv6去连接,收到更新后下载不了,可能是下载的地址不支持ipv6

ipv4/ipv6混合模式:
游戏包能够正常下载,也能够正常更新
同样解析出ipv4和ipv6的地址,但是能够支持ipv6的连接,所以连接上了。
下载更新时,存在ipv4环境,所以下载更新成功## 标题了。

下一步测试:
让运维去掉ipv6的解析,看各个模式下的解析情况,如果还能解析出来ipv6地址,并且是虚拟的ffff地址,那么应该是运营商增加了ipv6的解析,
但是玩家只支持ipv4,所以连不上。如果上这种情况,那就没办法解决了,

这种情况下只能找到ipv4/ipv6混合的网络给他,然后看能不能更新。因为登陆需要ipv6网络环境,下载更新需要ipv4网络环境。

  1. 首先确认玩家手机系统是否支持ipv6网络,不然解析出来ipv6,会一直登录不了
    ios 12.1默认开启了ipv4和ipv6,就算解析出来了有ipv6,但是手机不支持ipv6网络环境也没有办法

测试时间:9月23日 10:13
安卓手机开热点
连接其它游戏,其它只有ipv4解析

单ipv4模式:
解析出来的ip只有ipv4,能够连上服务器和更新。

单ipv6模式:
解析出来的ip只有ipv4,连不上服务器,可能是网络上ipv6,不能连ipv4

同样的单ipv4环境,其它游戏正常,游戏不正常,这两个的区别在于ipv6的解析

测试时间:9月23日 10:24
安卓开热点
去掉游戏的ipv6解析(生效有延时)

单ipv4网络:
解析出来只有ipv4地址,能够正常连接服务器和更新了

单ipv6网络:
连不上服务器
解析出来只有ipv4地址,连不上服务器,出现一直转圈的现象,网络环境和ip模式不匹配

ipv4/ipv6
解析出来只有ipv4地址,可以正常连接服务器和更新

测试时间:9月23日 11:11
游戏麻将
域名:huangs.dasheng-game.com
服务器模式:ipv4

联通热点:
单ipv4:
ipv4:120.27.234.111
ipv6:没有
表现:正常更新

单ipv6:
ipv4:120.27.234.111
ipv6:没有
表现:登录不上,一直转圈

ipv4/ipv6
ipv4:120.27.234.111
ipv6:没有
表现:正常更新

移动热点:
单ipv4:
ipv4:120.27.234.111
ipv6:没有
表现:正常更新
有时会登录缓慢,但是还上能够正常更新

单ipv6:
ipv4:120.27.234.111
ipv6:没有
表现:登录不上

ipv4/ipv6
ipv4:120.27.234.111
ipv6:
表现:正常更新

电信热点:
单ipv4:
ipv4:120.27.234.111
ipv6:没有
表现:正常更新

单ipv6:
ipv4:120.27.234.111
ipv6:没有
表现:登录不上,一直转圈

ipv4/ipv6
ipv4:120.27.234.111
ipv6:没有
表现:正常更新

之前能够获取到ipv6点地址,可能是之前有缓存的原因

第一个玩家

9月23日 下午4点半
玩家1:
服务器环境:单ipv4环境(ipv6的解析上午已经去掉了)

之前反馈游戏无法更新:
去了之后,发现玩家下载不了游戏麻将,appid的账号选择不上中国,应该是账号续费之前她试过更新不了,后面账号续费,关闭了国外的游戏包下载。
然后帮她设置地区,她不记得appid的账号,于是帮她重置appid账号,通过QQ邮箱找回账号。
但是她QQ的密码不记得了,通过手机找回,手机号验证不通过,不知道是不是她把手机输入错了,
然后通过手机发送短信重置QQ密码,然后通过QQ邮箱充值appid密码。
改完appid密码后,修改地区为中国大陆,能够搜索到游戏麻将了。
通过wifi和流量下载后,发现不能够更新,
检测wifi环境为单ipv4,但是现在服务端是单ipv4环境,她还是登录不上。 疑点1
用我们的手机开热点给她的手机提供网络,单ipv4和ipv4/ipv6混合模式都能够正常更新。 疑点2

按照预测,如果此时加上ipv6的解析,应该会出现登录不上的情况。于是让运维增加了ipv6的解析,结果玩家和我们自己测试还是可以登录和更新。 疑点3
离开那个地方后,吃饭时自己测试,发现更新不了,用的是单ipv4网络。发现现在可以解析到ipv6了。之前估计是网络信息有缓存,没有及时被刷新到。

推测:
疑点1:玩家的流量和wifi都是此前更新不上时已经存在的,已经存在了ipv6的解析结果,当运维去掉后,还缓存有,所以更新不了。
疑点2:我们提供给玩家的热点是此前没连接过的,此时关闭了ipv6的解析,只能解析到ipv4,单ipv4是可以更新到的。
疑点3:因为网络dns解析缓存的问题

回顾:
由于之前不会用工具看dns解析的结果。没有及时发现问题。
但是不会设置wifi的手动解析dns,不能将玩家已经被污染的环境修复。
没有对玩家的手机进行重新设置网络环境。

服务器环境:ipv4和ipv6环境
吃饭时有一台手机无法更新了,一直转圈。
插上电脑调试,发现此时可以解析出ipv4和ipv6的结果,但是手机网络是通过安卓手机提供的单ipv4热点。
由于ipv6的连接优先级高于ipv4,当用ipv4的网络环境去连接ipv6的id就会出现转圈的问题

不断的测试,尝试复现无法登录的现象

回到酒店后,一直在研究怎么将那台重新开始转圈的手机弄成可以正常更新。
统一网络环境为ipv4,通过多台iphone对比,有的可以更新,有的不行对比。确认了单ipv4的网络下,只要解析出了ipv6的ip就一定更新不了的问题

正常的网络解析:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KnEGCoXw-1572262873791)(en-resource://database/1381:1)]
无法登录的网络解析:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OdVxwJ94-1572262873792)(en-resource://database/1383:1)]

通过base Net Tools工具和查看wifi配置佐证了单ipv4连ipv6解析的ip更新不了的问题

然后想办法对网络进行设置,看能否解决问题

wifi连接的网络进行设置的尝试
对新版本的ios系统中的wifi进行调试,发现去掉ipv6的dns解析后,成功了一次。能够正常更新了。
然后设法让手机恢复到不能更新的状态,再重新进行设置。
经过多次测试后发现,如果给手机提供ipv6的网络,然后解析到ipv6后,再切到单ipv4的网络,在连接的wifi中就可以看到这个wifi存在2中dns解析
分别是ipv4和ipv6,此时就能够复现更新不了的问题了。
更新不了的问题复现了之后,设法修改wifi网络重新能够正常更新。
反复测试后,将连接的wifi中的dns解析修改为手动,删除掉ipv6的解析,保存后,断开wifi,然后重新连接,就只有ipv4的dns解析了。
经过测试,发现这个方法能够正常更新了。这部手机的系统为ios 12.4

拿出另外一台手机,系统为10.3.3
设置wifi的配置,发现不管怎么配置都还是不行,而且这个手机不能选择手动选dns,无法删除ipv6的ip
旧版本的ios手机无法设置wifi的dns解析,无法通过修改dns解析来恢复正常

结论:新版系统可以通过wifi设置来解决更新不了的问题,旧版系统不行。
当前ipv4和ipv6都开起的情况下,旧系统如果不升级只能通过连接ipv4/ipv6混合模式的热点进行连接和更新。

手机移动网络环境下
发现手机移动网络如果解析出了ipv6和ipv4的ip结果,
手机系统是旧系统,那么它是连不上的。猜测是因为旧系统根本没有开起ipv6的功能,ip解析的结果是运营商给的。
手机系统是新系统,能够正常的更新。

设法调整移动网络的配置
新/旧系统都没法像安卓那样设置网络是单ipv4还是ipv6或者ipv4/ipv6混合模式

通过修改网络环境的尝试:
猜想:3G网络上很多年前的,3G网络应该只有ipv4,不会有ipv6
将手机的网络修改为3G网络,发现能够登录,登录超级慢。更新不上,一直卡在0%。(此时我观察手机网络为E,并不少H,并且信号不强,酒店环境比较封闭,遮挡严重)
猜测3G网络应该是可行的,0%应该是网络不好,下载不到的原因。

第二个玩家

9月24日 9:00
第二天上午见玩家:
当前服务器解析为ipv4和ipv6

玩家手机系统ios 9.3,玩家不愿意升级系统,也不愿意插电脑调试
玩家用流量不能够正常更新,提供单ipv4的网络也不能更新。
猜测:流量和单ipv4的网络,但是运营商的dns还是可以解析到ipv6的ip,所以还是拿ipv6的ip去连接
重置过手机网络,单ipv4和她自己的流量也不行。
提供ipv4/ipv6的网络就可以正常更新了。
尝试让玩家用流量,然后将网络改为3G,网速很慢,登录和更新都很慢,但是可以正常更新。 猜测:3G网络在多年前布局的基站,可能dns解析就算有部署ipv6,但是都不会解析出来。

切换服务器解析为单ipv4后,玩家还是不能用流量正常更新,猜测是因为运营商的域名dns解析存在缓存。

第三个玩家

9月24日 13:00
第二天下午见玩家:
当前服务器解析为ipv4和ipv6

玩家手机系统ios 12.4(最新),愿意插电脑调试
不管是采用什么方式都不能更新,插电脑调试也没发现异常
切换服务器解析为单ipv4后,玩家还是不能正常更新。

后来发现是因为玩家以前下载过游戏麻将,然后将游戏麻将的网络禁用了。
打开游戏麻将的网络权限后,用流量和wifi都能够正常更新。

ios商城包登录转圈总结:

目前服务器的域名解析为单ipv4模式,以前是ipv4和ipv6都有解析

ios商城包不能更新,引导玩家步骤优先级:

  1. 检查是否允许了应用的网络权限。
    2.让玩家重启手机后再试一下。
    3.让其它玩家提供热点(最好是安卓手机)给玩家看是否能够更新,如果玩家不能更新,选择忘记这个wifi,然后重新加入,看能够正常更新,如果还不行,将wifi点开,截图提供给我们。
    4.让玩家将网络改成3G网络试一下。3G网路可能存在网速超级慢的情况,但是确实是可以更新成功的。更新过程中切换网络会导致更新不能继续。
    5.如果玩家手机系统低于12.4,可以让玩家升级系统后再试,还是不行的话,将1、2、3步骤试一遍。
    6.如果不愿意升级系统,并且通过以上步骤都不能解决,那么反馈给技术,然后技术跟进这个玩家的具体情况。
网络及手机环境分析:

1.iphone无法设置流量环境下的网络环境
2.手机系统升级后具备ipv6的解析能力
3.手机系统不管升不升级,wifi支持ipv6的解析能力
4.域名解析后的ip是供应商提供的,就算当前网络不支持ipv6的情况下,也有可能得到ipv6的ip解析结果,导致无法登录。(无法验证这个猜想)
5. 去掉ipv6的解析能力后,不能及时生效
6. 可以手动设置wifi的DNS解析结果,达到指定ip模式的效果。设置完后需要断开wifi重新连接生效。
7. 3G网络由于基站的原因,就算增加了ipv6的解析能力,也无法解析出ipv6的IP,不同地区3G网络速度超级慢。

追踪问题的方法
  1. 详细阅读代码,找出可能有问题的点
  2. 查找测试工具及网站
  3. 条件有限时,创造条件验证猜测。
  4. 反复测试,测试结果与期望不符时,仔细追溯问题的原因。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值