찾다

 >  Q&A  >  본문

objective-c - iOS开发,如何跳转到系统设置页?iOS10

使用[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=Privacy&path=LOCATION"]]在iOS9和8上可以成功跳转,但是在iOS10上无效。

巴扎黑巴扎黑2771일 전953

모든 응답(4)나는 대답할 것이다

  • 高洛峰

    高洛峰2017-04-18 09:51:24

    iOS10의 URL이 변경되었습니다. 자세한 내용은 https://github.com/yanzhong/...을 참조하세요.
    단, 이는 Widge에서만 유효하며 앱에서는 유효하지 않습니다.
    다른 방법으로 점프할 수도 있지만 비공개 API이기 때문에 심사를 통과하지 못합니다.

    참조: http://stackoverflow.com/ques...

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-04-18 09:51:24

    prefs:를 Prefs:로 바꾸면 끝입니다

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-18 09:51:24

    iOS10에서는 Wi-Fi, 위치 스위치 등 특정 설정 인터페이스로 점프하는 것이 비공개 API로 등록되어 있어 사용할 수 없습니다. iOS10에서는 해당 앱 설정 인터페이스로만 점프할 수 있습니다.
    [[ UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-18 09:51:24

    iOS10이 점프하지 않는 문제에 대해 iOS는 실제로 공개되지 않은 방법을 제공합니다. 하지만 절제가 문제이지만 이를 우회할 수 있는 방법을 찾을 수 있습니다.

    NSString * defaultWork = [self getDefaultWork];
    NSString * bluetoothMethod = [self getBluetoothMethod];
    NSURL*url=[NSURL URLWithString:@"Prefs:root=Bluetooth"];
    클래스 LSApplicationWorkspace = NSClassFromString(@"LSApplicationWorkspace");
    [[LSApplicationWorkspace PerformSelector:NSSelectorFromString(defaultWork)] PerformSelector:NSSelectorFromString(bluetoothMethod) withObject:url withObject:nil];
    ASCII 값을 사용하여 메서드를 조합하고 결합합니다. 이는 검토를 우회합니다.

    -(NSString *) getDefaultWork{
    SData *dataOne = [NSData dataWithBytes:(unsigned char []) {0x64,0x65,0x66,0x61,0x75,0x6c,0x74,0x57,0x6f,0x72,0x6b, 0x73,0x70,0x61,0x63,0x65} 길이:16];
    NSString *method = [[NSString alloc] initWithData:dataOne 인코딩:NSASCIIStringEncoding];
    반환 메서드;
    }
    -( NSString *) getBluetoothMethod{
    NSData *dataOne = [NSData dataWithBytes:(unsigned char []){0x6f, 0x70, 0x65, 0x6e, 0x53, 0x65, 0x6e, 0x73, 0x69,0x74, 0x69,0x76,0x65,0x55 ,0x52,0x4c} 길이:16];
    NSString *keyone = [[NSString alloc] initWithData:dataOne 인코딩:NSASCIIStringEncoding];
    NSData *dataTwo = [NSData dataWithBytes:(unsigned char []){0x77, 0x69,0x74,0x68,0x4f,0x70,0x74,0x69,0x6f,0x6e,0x73} 길이:11];
    NSString *keytwo = [[NSString alloc] initWithData:dataTwo 인코딩:NSASCIIStringEncoding];
    NSString * method = [NSString stringWithFormat:@"%@%@%@%@",keyone,@":",keytwo,@":"];
    return method;
    }
    위는 Bluetooth 인터페이스 방법을 입력합니다. 다른 페이지로 이동할 수도 있습니다. 설정 페이지는 @"@"Prefs:root=TETHERING"이고, wifi는 @"Prefs:root=WIFI"입니다. Prefs의 P는 대문자로 되어 있으니 참고하세요. 이렇게 작성하면 단점도 있습니다. Apple의 미공개 방법의 경우 한 번 수정되면 다시 수정해야 합니다.

    다른 답변을 참조하세요: https://segmentfault.com/q/10...

    회신하다
    0
  • 취소회신하다