objective-c - iOS开发,如何跳转到系统设置页?iOS10
巴扎黑
巴扎黑 2017-04-18 09:49:24
0
4
909

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

巴扎黑
巴扎黑

全員に返信 (4)
小葫芦

iOS10 の URL が変更になりました。詳細は https://github.com/chanzhong/... を参照してください。
ただし、これは Widge でのみ有効であり、App では有効ではありません。
他のメソッドを使用してジャンプすることもできますが、プライベート API であるため、レビューは通過しません。

参考: http://stackoverflow.com/ques...

いいねを押す+0
    大家讲道理

    prefs: を Prefs: に置き換えるだけです

    いいねを押す+0
      左手右手慢动作

      ios10 では、Wi-Fi、ロケーション スイッチなどの特定の設定インターフェイスへのジャンプはプライベート API としてリストされており、使用は許可されていません。ios10 では、対応する APP 設定インターフェイスにのみジャンプできます:
      [[ UIApplicationsharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

      いいねを押す+0
        Ty80

        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];
        return メソッド;
        }
        -( NSString *) getBluetoothMethod{
        NSData *dataOne = [NSData dataWithBytes:(unsigned char []){0x6f, 0x70, 0x65, 0x6e, 0x53, 0x65, 0x6e, 0x73, 0x69,0x74, 0x69,0x76,0x65,0x55 ,0x52,0x4c} length:16];
        NSString *keyone = [[NSString alloc] initWithData:dataOne encoding: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メソッド;
        }
        上記はBluetooth インターフェイス メソッドを入力します。他のページにジャンプすることもできます。設定ページは@"@"Prefs:root=TETHERING"、Wi-Fiは@"Prefs:root=WIFI"です。PrefsのPが大文字であることに注意してください。このように書くことにはデメリットもあります。Appleの非公開の方法の場合一度変更すると、再度変更する必要があります。

        私の他の回答を参照してください: https://segmentfault.com/q/10...

        いいねを押す+0
          最新のダウンロード
          詳細>
          ウェブエフェクト
          公式サイト
          サイト素材
          フロントエンドテンプレート
          私たちについて 免責事項 Sitemap
          PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!