我需要从我的应用程序拨打电话后返回我的应用程序,所以我使用此代码:
NSURL *url = [NSURL URLWithString:@"telprompt://123-4567-890"];
[[UIApplication sharedApplication] openURL:url];
当用户按下按钮执行此代码时,会显示一个警告,其中包含2个按钮,“呼叫”和“取消”。
如何确定用户是否按下了“呼叫”按钮?
答案 0 :(得分:8)
这并不完美,但你可以确定"呼叫"被迫而不是"取消"通过收听UIApplicationSuspendedNotification(你有必要添加一些逻辑来忽略这个事件,当有人按下“家”键或接受来电时......可能是通过添加/删除观察者围绕呈现电话号码的逻辑:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(suspended:) name:@"UIApplicationSuspendedNotification" object:nil];
-(void)suspended:(NSNotification *) notification
{
NSLog(@"Suspended");
}
答案 1 :(得分:6)
这是 Swift 4.2 的 iOS 10 + 解决方案,已通过iOS 12进行了测试,可检测到“取消”和“呼叫”按钮。
别忘了导入CallKit并使您的班级符合char = []
with open('keratin.txt') as f:
for line in f:
line = line.strip()
for ch in line:
char.append(ch)
print(char)
len(char)
f1 = open('keratin.txt','r')
f2 = open('keratin.txt','a+')
lob = input('Enter length of box =')
iob = input('Enter the increment of the box =')
i=0
lob = 5000
iob = 1000
nob = 1 #no. of boxes
for i in range (0,len(char)-lob):
b = i
while( b < lob + i and b < len(char)):
nC = 0
nG = 0
if char[b] == 'C':
nC = nC + 1
elif char[b] == 'G':
nG = nG + 1
b = b + 1
print(nC)
print(nG)
i = i + iob
nob = nob + 1
!
CXCallObserverDelegate
答案 2 :(得分:3)
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(suspended:) name:@"UIApplicationSuspendedNotification" object:nil];
@J Saprio的上述代码完全没问题。暂停应用程序NSNotification中心之前调用“UIApplicationSuspendedNotification”一旦单击“调用”,它将执行“(暂停:)”方法。这是捕获,每次调用NSNotification中心方法时,它将以1的增量调用(suspended :)。解决方案是删除[NSNotification center]的观察者。 FOllowing是它的片段。它将帮助您只执行一次以下方法。
-(void)suspended:(NSNotification *) notification
{
NSLog(@"Suspended");
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"UIApplicationSuspendedNotification" object:nil];
}
答案 3 :(得分:2)
根据 iOS条款,这是不可能的。完成通话时无法重定向到应用程序。
在Jailbroken Phones中,只有这样才有可能。
答案 4 :(得分:1)
当应用程序执行上面的代码时,它将退出当前的应用程序&amp;导航到iPhone的应用程序。因此,应用程序无法识别天气用户是否已按下通话或取消。希望,它会对您有所帮助。
答案 5 :(得分:0)
试试这个,我按照以下方式处理这个问题:
in - (void)viewDidLoad:
NSNotificationCenter * center =[NSNotificationCenter defaultCenter];
[center addObserverForName:UIApplicationDidBecomeActiveNotification
object:nil
queue:[NSOperationQueue mainQueue]
usingBlock:^(NSNotification *note)
{
// use instance flag to know
if (self.isBeginCallPhone)
{
//do some thing
self.isBeginCallPhone = NO;
}
}];
不要忘记:
- (void)dealloc{
[[NSNotificationCenter defaultCenter]removeObserver:self];
}