使用prefs:root被拒的问题

在iOS 10中苹果官方已经不允许app跳转到各个设置页面了,只能使用

[[UIApplication sharedApplication]openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

代替。

如果我们需要在app内部跳转到iOS的WIFI页面,我们可以绕过审核被拒的风险,利用ASCII值进行拼装组合方法:

-(NSString*) getDefaultWork{

    NSData*dataOne = [NSDatadataWithBytes:(unsignedchar[]{0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x57,0x6f,0x72,0x6b,0x73,0x70,0x61,0x63,0x65} length:16];

    NSString*method = [[NSStringalloc] initWithData:dataOne encoding:NSASCIIStringEncoding];

     returnmethod;//defaultWorkspace

}

-(NSString*) getBluetoothMethod{

    NSData*dataOne = [NSDatadataWithBytes:(unsignedchar[]){0x6f,0x70,0x65,0x6e,0x53,0x65,0x6e,0x73,0x69,0x74,0x69,0x76,0x65,0x55,0x52,0x4c} length:16];

    NSString*keyone = [[NSStringalloc] initWithData:dataOne encoding:NSASCIIStringEncoding];

    NSData*dataTwo = [NSDatadataWithBytes:(unsignedchar[]){0x77,0x69,0x74,0x68,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73} length:11];

    NSString*keytwo = [[NSStringalloc] initWithData:dataTwo encoding:NSASCIIStringEncoding];

    NSString*method = [NSStringstringWithFormat:@"%@%@%@%@",keyone,@":",keytwo,@":"];

    returnmethod;//openSensitiveURL:withOptions:

}

这么写的弊端是,如果苹果的未公开方法一旦修改。我们必须重新进行修改。

为了减少苹果私有方法更改带来的损失,我们可以将这些方法名从服务端获取,然后解析并使用,即使苹果修改了方法名,我们只要及时更新服务端的方法名即可。

有一个坑就是,代码里不能有prefs:root,如果有,APP会被拒,所以这个字符串最好也从服务端获取使用。该坑已 踩过。

 oooO ↘┏━┓ ↙ O

  \_)↗┗━┛ ↖(_/ 

  \ ( →┃√┃ ← ) / oo

 ( 踩)→┃你┃ ←(死 ) o

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • /**ios常见的几种加密方法: 普通的加密方法是讲密码进行加密后保存到用户偏好设置( [NSUserDefaul...
    彬至睢阳阅读 3,031评论 0 7
  • 首先罗列一些知识点: 1.加密算法通常分为对称性加密算法和非对称性加密算法:对于对称性加密算法,信息接收双方都需事...
    JonesCxy阅读 1,439评论 2 4
  • APP的跳转: 通过[ [UIApplication sharedApplication] openURL:url...
    贪吃的猫cx阅读 7,762评论 5 27
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,219评论 30 472
  • function convertHexStringToNormal( str )return (str:gsub(...
    晴茗阅读 686评论 0 0