如何强制iOS MapKit为其所有通信使用HTTPS?

在我的应用中嵌入地图会导致生成许多HTTP请求,形式如下:

http://gspe19.ls.apple.com/tile.vf?flags=1&style=1&size=2&scale=0&v=99999999&z=99&x=9999&y=9999&checksum=1&sid=999999&accessKey=XXXXXX

这是一个滚动显示在地图上的图块数据.但是,HTTP的使用是一个信息泄露问题 – 任何窃听网络的人都可以识别您正在查看的位置,并且可能中间人攻击数据以向您提供不正确的信息或尝试触发错误.

有没有办法强制MapKit通过HTTPS发送这些请求? API文档不清楚.

最佳答案 这看起来有点像矫枉过正,但您可以完全替换地图内容以使用您自己的服务器,因此它不会与苹果服务器通信以加载地图数据.

NSString *template = @"https://c.tile.openstreetmap.org/{z}/{x}/{y}.png";
overlay = [[MKTileOverlay alloc] initWithURLTemplate:template];
overlay.canReplaceMapContent = YES;
[map addOverlay:overlay level:MKOverlayLevelAboveLabels];

您还可以测试MKMapSnapshotter是否也不安全.如果不是,您可以在实现loadTileAtPath:result:的MKTileOverlay子类中使用它.

点赞