[已解决]prefs:root 上架被拒问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ws1352864983/article/details/81912055

被拒邮件明显提示:

prefs:root


看着这个prefs:root的字样,想到了qpp跳转到系统WIFI页面的功能。所以猜测是因为现在苹果不支持这种api了,在审核的时候发现这字样的代码,就被拒了。

以前做跳转都是下面这样的:

//iOS10
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root= WIFI"] options:@{} completionHandler:nil];
//
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root= WIFI"]];

而明显,邮件的意思是现在不可以用这样的prefs的描述字段了。

在网上找到解决方法是想办法对prefs:root = WIFI 字段做转换,这样可以在审核时逃过代码扫描,具体方法如下:

//将字符串转换为16进制
NSData *encryptString = [[NSData alloc] initWithBytes:(unsigned char []){0x70,0x72,0x65,0x66,0x73,0x3a,0x72,0x6f,0x6f,0x74,0x3d,0x4e,0x4f,0x54,0x49,0x46,0x49,0x43,0x41,0x54,0x49,0x4f,0x4e,0x53,0x5f,0x49,0x44} length:27];

NSString *string = [[NSString alloc] initWithData:encryptString encoding:NSUTF8StringEncoding];

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:string] options:@{} completionHandler:nil];

在线转化的网站很多,这里贴上一个:

http://www.ab126.com/goju/1711.html


更新最新进展:

关于这个问题,苹果的要求是不可以再使用prefs:root以及App-Prefs:root的接口来做app内部和系统设置的跳转了。现在做app系统设置跳转,官方的只能使用UIApplicationOpenSettingURLString.

并且,明确一点,就是打开url的api也是需要做适配的。

下面直接用

  //将上面的跳转字符串转成字符,在进行拼接就好了
    NSData *encryptString = [[NSData alloc] initWithBytes:(unsigned char []){0x41,0x70,0x70,0x2d,0x50,0x72,0x65,0x66,0x73,0x3a,0x72,0x6f,0x6f,0x74,0x3d,0x57,0x49,0x46,0x49} length:19];//注意length长度 一定要是你所编码的字符长度

    NSString *urlString = [[NSString alloc] initWithData:encryptString encoding:NSUTF8StringEncoding];
    NSLog(@"urlString:%@",urlString);
    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:urlString]]) {

        if ([[UIDevice currentDevice].systemVersion doubleValue] >= 10.0) {
            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString] options:@{} completionHandler:nil];

        } else {

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

        }

    }

最后一点:

一些网站上说使用prefs:root配合在info.plist上加入URL scheme值为prefs:的方案可以解决这个上架被拒的问题。但是经过我自己的测试,现在“prefs:root”是苹果不允许的,而且这个在info.plist中加入URL scheme值为prefs:也是不可以的。

也就是说使用“prefs:root”做跳转 以及 在info.plist中加入URL scheme值为prefs:,这两者,只要存在其中一项都会被app store拒绝的。

我现在的项目已经可以上架成功了,就是把原本在info.plist中的prefs去掉之后,就上架成功了!

文章参考自:sunnycsx

展开阅读全文

没有更多推荐了,返回首页