【问题标题】:How to switch networks(2G/3G/4G) WITHOUT jailbreak in iOS7?iOS7如何在不越狱的情况下切换网络(2G/3G/4G)?
【发布时间】:2014-10-16 07:10:03
【问题描述】:

我找到了some private APIs,但是好像没有root权限,我只能“读”,不能“写”,这意味着它不能与该功能一起使用

setAirplaneMode:YES

有没有办法做到这一点没有越狱,如果有,怎么做?

更新

我找到了一个Undocumented API,它可以在iOS7和iOS8中切换网络类型(2G/3G/4G)而无需越狱,即使有一些小问题。这里是:

char* sdk_path = "/System/Library/Frameworks/CoreTelephony.framework/CoreTelephony"; //path of this Undocumented API
int* handle = dlopen(sdk_path,RTLD_LAZY);
if(handle == NULL){
    return;
}
struct CTServerConnection * (*CTServerConnectionCreate)() = dlsym(handle,"_CTServerConnectionCreate");
sc=CTServerConnectionCreate(kCFAllocatorDefault, callback, &t1);
void (*CTServerConnectionSetRATSelection)() = dlsym(handle, "_CTServerConnectionSetRATSelection");

那么,如果你只想使用2G,你可以使用这个功能:

CTServerConnectionSetRATSelection(&t1, sc, kCTRegistrationRATSelection0);

仅适用于 3G:

CTServerConnectionSetRATSelection(&t1, sc, kCTRegistrationRATSelection1);

但是如果要使用4G,可能需要四个参数,

CTServerConnectionSetRATSelection(&t1, sc, kCTRegistrationRATSelection6,kCTRegistrationRATSelection6);

哦,顺便说一句,你应该在课堂上添加这些:

extern CFStringRef kCTRegistrationRATSelection0;
extern CFStringRef kCTRegistrationRATSelection1;
extern CFStringRef kCTRegistrationRATSelection2;
extern CFStringRef kCTRegistrationRATSelection3;
extern CFStringRef kCTRegistrationRATSelection4;
extern CFStringRef kCTRegistrationRATSelection5;
extern CFStringRef kCTRegistrationRATSelection6;
extern CFStringRef kCTRegistrationRATSelection7;
extern CFStringRef kCTRegistrationRATSelectionUnknown;

我不知道它是如何工作的,但它确实在 iOS7 和 iOS8 中,没有越狱。但这里有问题:

如果您已使用此 API 切换到 2G,则无法在 iPhone->设置中启用 3G/4G。看起来您强制系统使用您已更改的网络。还有一个问题,我们都知道在4G里,语音通话是用CSFB,但是如果你用这个API切换到4G,就不能拨打任何号码,也不能接听任何来电,因为2G和3G都无法使用。

有人知道这个功能吗

_CTServerConnectionSetRATSelection ?

还有,这是什么

CFStringRef kCTRegistrationRATSelectionX 

是什么意思?如何解决我的问题以启用 4G 通话?非常感谢!

【问题讨论】:

  • 不行,没办法改
  • 我总是问这样一个问题:如果一个应用未经我的许可就可以做 X,我会不会生气?如果答案是肯定的,那么苹果很有可能设计该系统来防止这种情况发生。如果应用程序会干扰我的连接,那肯定会让我很恼火。
  • @dandan78,这是一个很好的问题,但对于几乎所有安全关键问题,Apple 的回答都是“否”。在 iOS 6-7 之前,即使是 AppStore 应用程序,您也可以接听/取消电话、发送短信、访问私人信息、录制音频/视频等。即使现在您也可以免费访问一些私人信息。所以,最后,这个问题不起作用,你很有可能在没有越狱和用户许可的情况下做很多事情。上面答案的更新只是我观点的另一个证明。

标签: ios ios7 iphone-privateapi


【解决方案1】:

没有公开的 API。你运气不好

我喜欢 dandan78 的评论:我总是问这样一个问题:如果一个应用未经我的许可就可以做 X,我会不会生气?如果答案是肯定的,那么苹果很有可能设计该系统来防止这种情况发生。如果应用程序会干扰我的连接,那肯定会让我很恼火。”

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 2019-06-07
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多