IOS上关于法国问题的一个巨坑

产品上线,有法国的玩家反馈,卡死在loading界面,还发了视频。第一反应是,这应该是个例,没有理睬。

一周后,发现留存有问题。分析数据后发现,法国地区的用户,留存几乎为0。所以,这里一定有问题。

第一步,我们先复现这样的情况,

  • 采用法国地区的账号下载,没有问题。

  • 把游戏中的语言切换成法语,没有问题。

  • 把设备中的语言修改为法语,没有问题.

  • 把设备中的地区修改为法国,问题复现了。

第二步,采用xcode联调,查看问题

最后发现在在解析地图的时候,被catch了。提示

1
未知的char :.

刚刚开始以为出现了空格,逐步打印日志,并没有发现多余的空格。其实这里的提示是指,无法解析.

这就无法解释了,地图中采用了浮点数,里面存在大量的.,为什么会不支持.的解析呢

查阅资料后,发现这里的float.Parse具有文化环境。法国地区的表达小数是用,,而不是.。举例

1
2
3
数字: 12.34
通常表达 12.34
法国地区表达: 12,34

所以法国地图的解析无法识别.

解决方法

在项目启动的时候,处理Culture

1
2
3
4
5
6
7
CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");

CultureInfo.CurrentCulture = culture;
CultureInfo.CurrentUICulture = culture;

CultureInfo.DefaultThreadCurrentCulture = culture;
CultureInfo.DefaultThreadCurrentUICulture = culture;