如何在iOS7中切换网络(2G / 3G / 4G)而不越狱?

我找到了一些私有API,但它看起来像没有root访问权限,我只能'读',而不'写',这意味着它不能与函数一起工作

setAirplaneMode:YES

有没有办法做到这一点, 没有越狱,如果是这样,如何?

UPDATE

我发现了一个Untocumented 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呼叫? 非常感谢!


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

我喜欢丹丹78的评论:我总是问这样一个问题:它会让我失望吗?一个应用程序能够在未经我许可的情况下执行X操作? 如果答案是肯定的,那么苹果设计这个系统很有可能会阻止这种情况的发生。 如果应用程序可能会扰乱我的连接,它肯定会让我烦恼。“

链接地址: http://www.djcxy.com/p/58401.html

上一篇: How to switch networks(2G/3G/4G) WITHOUT jailbreak in iOS7?

下一篇: What API to use to check if user is about to use roaming call?