在原始问题没有回答之后重新发布更简洁和专注的问题.在另一天的研究之后,还要对问题进行更深入的了解:
在我的app delegate(didFinishLaunching)中,我设置了一个callEventHandleron CTCallCenter.我的想法是,当callState发生变化时,我会发布一个包含userInfo dict的通知call.callState.在我看来,我观察到这个通知,当
userInfodict包含值时CTCallDisconnected,我想取消隐藏视图.
我遇到的问题是,无需担心的方面,几乎是一致的,约7秒钟.其他一切工作正常,我知道这是因为我NSLog在取消隐藏之前和之后,这些日志立即出现,但是看不见的视图仍然滞后7秒.
这是我的代码:
appDidFinishLaunching:
self.callCenter = [[CTCallCenter alloc] init];
self.callCenter.callEventHandler = ^(CTCall* call) {
// anounce that we've had a state change in our call center
NSDictionary *dict = [NSDictionary dictionaryWithObject:call.callState forKey:@"callState"];
[[NSNotificationCenter defaultCenter] postNotificationName:@"CTCallStateDidChange" object:self userInfo:dict];
};
Run Code Online (Sandbox Code Playgroud)
然后,当用户点击拨打电话号码的按钮时,我会收听此通知:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(ctCallStateDidChange:) name:@"CTCallStateDidChange" object:nil];
Run Code Online (Sandbox Code Playgroud)
然后,在ctCallStateDidChange中:
- (void)ctCallStateDidChange:(NSNotification *)notification
{
NSLog(@"121");
NSString *callInfo = [[notification userInfo] objectForKey:@"callState"];
if ([callInfo isEqualToString:CTCallStateDisconnected]) {
NSLog(@"before show"); …Run Code Online (Sandbox Code Playgroud) iphone objective-c grand-central-dispatch ios core-telephony
我们正在编写一个iPhone应用程序(将在后台),当接到来电时会收到通知.该应用程序执行一些后台工作 - 在电话会话正在进行时访问服务器检索某些数据,然后通知用户.
搜索之后,我发现我可以使用它Private Telephony Headers/Framework来实际知道谁在我的应用程序中调用.但是,我无法使用从服务器检索到的信息更新拨号程序屏幕.此外,我发现应用程序必须在电话到达时运行.牦牛!
我知道这不会在苹果商店批准,但我正在寻找两件事:
即使我们不得不越狱,我也想知道如何完成这项工作.这个应用程序是执法官员 - 概念证明.
我正在尝试用我的iPhone 5获取手机信号塔数据.我一直在测试VAFieldTest(https://github.com/valexa/VAFieldTest).在第61行的文件VAFieldTestViewController.m(https://github.com/valexa/VAFieldTest/blob/master/Classes/VAFieldTestViewController.m)中,它总是为iPhone 4S和5返回0.
经过调查,有人说苹果将调制解调器(适用于iPhone 4S)的英飞凌黄金更换为高通mdm6610,而iPhone 5正在使用MDM9615M,从而使方法调用毫无用处.
那么,还有其他方法可以获得iPhone 5的手机信息塔数据吗?
注意:此问题仅适用于iPhone 5.这不是其他问题的重复,因为它们仅适用于iPhone 4.
我想尝试在我的应用中检测来电.我从头开始创建一个新的Swift项目,只是为了尝试一些代码.我唯一做的就是在每个新项目创建的ViewController中导入CoreTelephony,我还将viewDidLoad()更改为:
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let callCenter = CTCallCenter()
NSLog("start")
callCenter.callEventHandler = {[weak self] (call: CTCall) -> () in
self?.label.text = call.callState
NSLog("Call state")
NSLog(call.callState)
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过没有[弱自我],因为我是新手,并且不确定它需要什么.
当我通过手机上的XCode运行我的新小应用程序时,收到呼叫,断开连接或其他任何事情都没有任何反应.什么都没有错误.为了使用CoreTelephony框架和CTCallCenter,我还需要做些什么吗?
关心约翰
我正打算在来电时获取来电显示(电话号码).TrueCaller实现了这一点,他们获得了来电者的电话号码.
我发现了这个信息:1.CoreTelephony框架(它只提供呼叫状态)2.Apple的9.0更新:"可能"联系人同步.使用邮件应用程序并检测传入的电话号码.
如何查找用户是否从手机(iPhone)更改了SIM卡.我们可以通过编程方式找到"mobileCountryCode,isoCountryCode,mobileCountryCode和mobileNetworkCode"这些并非特定于特定的SIM,这些是特定于运营商的,有什么方法可以识别用户何时从他的iPhone更换SIM卡.
请任何人帮我这个.
提前致谢.
我有一个应用程序,我想收到短信时作出反应; 直到iOS 7,这通过注册到CTTelephonyCenter这样工作:
id center = CTTelephonyCenterGetDefault();
CTTelephonyCenterAddObserver(center,
NULL,
callback,
NULL,
NULL,
CFNotificationSuspensionBehaviorHold);
Run Code Online (Sandbox Code Playgroud)
并在回调检查kCTMessageReceivedNotification.这在iOS 8中不再起作用,因为我收到的通知类型远少于iOS 7,并且没有与消息接收有关.我认为这是关于一项新的权利,但如果是这样的话,还无法确定,以及所需的权利是多少.有人知道如何解决这个问题吗?
我正在尝试构建一个需要访问 iOS 设备的 Sim 卡唯一身份的应用程序。是否可以使用任何私有 API 获取 SIM 卡的 ICCID 和 IMSI 等详细信息
关于 CoreTelephony 的 CTCarrier 的问题。我听说我应该在 iOS 12 中使用 serviceSubscriberCellularProviders 而不是subscriberCellularProvider,因为subscriberCellularProvider 将被弃用。所以我写了以下代码。
import UIKit
import CoreTelephony
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let telephony = CTTelephonyNetworkInfo()
if #available(iOS 12.0, *) {
let carrier = telephony.serviceSubscriberCellularProviders
print(carrier)
}
else {
let carrier = telephony.subscriberCellularProvider
print(carrier)
}
}
}Run Code Online (Sandbox Code Playgroud)
SubscriberCellularProvider 成功返回正确的 SIM 卡信息,但是 serviceSubscriberCellularProviders 只返回 nil 值。
你知道为什么会这样吗?请帮我
我在将 eSIM 实施到现有的 iOS 运营商应用程序中时遇到了一些麻烦。
设置
public-cellular-plan我理解的权利,该权利允许我访问 CoreTelephony 的 eSIM 功能。General > Frameworks, Libraries, and Embedded Content标记为Do not Embed,与 CoreData 等其他框架相同。import CoreTelephony问题
假设所有这些,我现在应该可以访问 eSIM 功能,supportsCellularPlan但不幸的是它似乎不起作用:
let provisioning = CTCellularPlanProvisioning()
let supportsESIM = provisioning.supportsCellularPlan()
print("\(supportsESIM)")
// This prints false but should be true as the XR supports eSIM
Run Code Online (Sandbox Code Playgroud)
我也尝试通过 TestFlight 使用分布配置文件,但结果相同。
关于我做错了什么的任何想法?
core-telephony ×10
ios ×8
iphone ×3
swift ×3
jailbreak ×2
objective-c ×2
ios5 ×1
ios6.1 ×1
ios8 ×1
iphone-5 ×1
phone-call ×1
xcode ×1