标签: core-telephony

在CTCallCenter callEventHandler中取消隐藏视图非常慢

在原始问题没有回答之后重新发布更简洁和专注的问题.在另一天的研究之后,还要对问题进行更深入的了解:

在我的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

7
推荐指数
1
解决办法
3289
查看次数

收到电话时更新屏幕的iPhone后台应用程序

我们正在编写一个iPhone应用程序(将在后台),当接到来电时会收到通知.该应用程序执行一些后台工作 - 在电话会话正在进行时访问服务器检索某些数据,然后通知用户.

搜索之后,我发现我可以使用它Private Telephony Headers/Framework来实际知道谁在我的应用程序中调用.但是,我无法使用从服务器检索到的信息更新拨号程序屏幕.此外,我发现应用程序必须在电话到达时运行.牦牛!

我知道这不会在苹果商店批准,但我正在寻找两件事:

  1. 如何将此应用程序置于后台.
  2. 如何在通话过程中显示一些信息.本地通知没问题,但必须立即显示.

即使我们不得不越狱,我也想知道如何完成这项工作.这个应用程序是执法官员 - 概念证明.

iphone jailbreak ios core-telephony ios5

7
推荐指数
1
解决办法
2081
查看次数

如何获取iPhone 5的手机信号塔数据?

我正在尝试用我的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.

signal-strength ios core-telephony iphone-5 ios6.1

7
推荐指数
1
解决办法
726
查看次数

使用CTCallCenter(Swift)检测iOS上的电话

我想尝试在我的应用中检测来电.我从头开始创建一个新的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,我还需要做些什么吗?

关心约翰

phone-call ios core-telephony swift

7
推荐指数
2
解决办法
7650
查看次数

从iPhone上的来电中获取来电者的电话号码

我正打算在来电时获取来电显示(电话号码).TrueCaller实现了这一点,他们获得了来电者的电话号码.

我发现了这个信息:1.CoreTelephony框架(它只提供呼叫状态)2.Apple的9.0更新:"可能"联系人同步.使用邮件应用程序并检测传入的电话号码.

ios core-telephony

7
推荐指数
1
解决办法
1万
查看次数

如何识别iPhone中的SIM卡更改时间?

如何查找用户是否从手机(iPhone)更改了SIM卡.我们可以通过编程方式找到"mobileCountryCode,isoCountryCode,mobileCountryCode和mobileNetworkCode"这些并非特定于特定的SIM,这些是特定于运营商的,有什么方法可以识别用户何时从他的iPhone更换SIM卡.

请任何人帮我这个.

提前致谢.

iphone core-telephony

6
推荐指数
1
解决办法
2795
查看次数

CTTelephonyCenterAddObserver不通知接收SMS

我有一个应用程序,我想收到短信时作出反应; 直到iOS 7,这通过注册到CTTelephonyCenter这样工作:

        id center = CTTelephonyCenterGetDefault();
        CTTelephonyCenterAddObserver(center,
                                     NULL,
                                     callback,
                                     NULL,
                                     NULL,
                                     CFNotificationSuspensionBehaviorHold);
Run Code Online (Sandbox Code Playgroud)

并在回调检查kCTMessageReceivedNotification.这在iOS 8中不再起作用,因为我收到的通知类型远少于iOS 7,并且没有与消息接收有关.我认为这是关于一项新的权利,但如果是这样的话,还无法确定,以及所需的权利是多少.有人知道如何解决这个问题吗?

jailbreak ios core-telephony ios8

6
推荐指数
1
解决办法
1752
查看次数

在 iPhone 中以编程方式访问 SIM 信息

我正在尝试构建一个需要访问 iOS 设备的 Sim 卡唯一身份的应用程序。是否可以使用任何私有 API 获取 SIM 卡的 ICCID 和 IMSI 等详细信息

objective-c iphone-privateapi ios core-telephony

6
推荐指数
1
解决办法
6851
查看次数

为什么 serviceSubscriberCellularProviders 返回 nil?(在 iOS 12 中)

关于 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 值。

你知道为什么会这样吗?请帮我

core-telephony swift

6
推荐指数
1
解决办法
4596
查看次数

CoreTelephony eSIM 功能在设备上不起作用

我在将 eSIM 实施到现有的 iOS 运营商应用程序中时遇到了一些麻烦。

设置

  • 该应用程序已收到public-cellular-plan我理解的权利,该权利允许我访问 CoreTelephony 的 eSIM 功能。
  • 我在应用程序的目标中导入了 CoreTelephony 框架:General > Frameworks, Libraries, and Embedded Content标记为Do not Embed,与 CoreData 等其他框架相同。
  • 我已经在进行调用的类中导入了库 import CoreTelephony
  • 我正在 iPhone XR 上通过 Xcode 使用正确的配置文件运行开发版本,它有一个活动的数据计划,所以我确定它支持它。

问题
假设所有这些,我现在应该可以访问 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 使用分布配置文件,但结果相同。

关于我做错了什么的任何想法?

xcode ios provisioning-profile core-telephony swift

6
推荐指数
1
解决办法
840
查看次数