IOS以编程方式拒绝来电?
Posted
技术标签:
【中文标题】IOS以编程方式拒绝来电?【英文标题】:IOS decline incoming call programmatically? 【发布时间】:2017-02-20 12:07:59 【问题描述】:有什么方法可以快速以编程方式拒绝来电。我的代码是这样的:
self.callCenter.callEventHandler = (_ call: CTCall) -> Void in
if call.callState == CTCallStateDisconnected
print("Call has been disconnected")
else if call.callState == CTCallStateConnected
print("Call has just been connected")
else if call.callState == CTCallStateIncoming
print("Call is incoming")
else
print("None of the conditions")
我以这种方式检测来电状态。但我不知道如何更改 callstate
的 CTCAll
。请帮帮我!。
【问题讨论】:
你无法做到这一点。至少对于未越狱的设备而言。 这里有一个objective-c代码: 此代码告诉您电话是否处于通话状态。它不允许您修改状态。想象一下,如果 Apple 允许应用程序这样做会发生什么,人们会创建恶意应用程序,通过断开电话基本上使手机瘫痪。 (始终假设此类应用程序会通过 Apple Review 和 App Process 看门狗将允许它们在后台运行无限时间)。答案是 NO 并且有充分的理由! @NSNoob 仅仅因为你不能提供一个好的理由并不意味着没有一个。希望提供来电显示以及根据他们所做的事情接听/拒绝呼叫的能力的家庭自动化应用程序呢?也许对于那些难以导航在床头柜上使用两个大按钮的触摸界面的残疾人/盲人来说。在回答技术问题时,最好将固执己见/答案留给自己。 除此之外,几乎所有其他系统修改都有一个弹出窗口,询问用户并提供描述性详细信息,他们将使用所述权限做什么。通知、相机、GPS,都使用上述接口。这可以很容易地扩展到 CallKit API。 【参考方案1】:#import <CoreTelephony/CTCall.h>
#import <CoreTelephony/CTCallCenter.h>
#import <CoreTelephony/CTCarrier.h>
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
@interface MMCallNotificationManager()
@property (nonatomic, strong) CTCallCenter *callCenter;
@property (nonatomic) BOOL callWasStarted;
@end
@implementation MMCallNotificationManager
- (instancetype)init
self = [super init];
if (self)
self.callCenter = [[CTCallCenter alloc] init];
self.callWasStarted = NO;
__weak __typeof__(self) weakSelf = self;
[self.callCenter setCallEventHandler:^(CTCall *call)
if ([[call callState] isEqual:CTCallStateIncoming] ||
[[call callState] isEqual:CTCallStateDialing])
if (weakSelf.callWasStarted == NO)
weakSelf.callWasStarted = YES;
NSLog(@"Call was started.");
else if ([[call callState] isEqual:CTCallStateDisconnected])
if (weakSelf.callWasStarted == YES)
weakSelf.callWasStarted = NO;
NSLog(@"Call was ended.");
];
return self;
@end
【讨论】:
这根本不会修改通话状态。 同样,这只是告诉您电话是否处于通话状态。它不会让你断开通话 那么有什么办法可以在来电时恢复应用程序。我正在尝试制作视频通话应用程序。我希望来电时不要断开连接。 @apache 把它留给用户。 ios 允许您使用这些状态来处理中断。如果用户不希望视频通话被打断,他将挂断手机通话。如果他想接听蜂窝电话,你的应用应该无法断开它以上是关于IOS以编程方式拒绝来电?的主要内容,如果未能解决你的问题,请参考以下文章