Выполнение телефонного звонка в приложении iOS
У меня есть код, который пытается сделать вызов внутри приложения, но он, похоже, не работает:
UIApplication *myApp = [UIApplication sharedApplication];
NSString *theCall = [NSString stringWithFormat:@"tel://%@",phone];
NSLog(@"making call with %@",theCall);
[myApp openURL:[NSURL URLWithString:theCall]];
Иногда переменная phone
является чем-то вроде @"(102) 222-2222"
. Как я могу позвонить с таким номером телефона? Нужно ли вручную извлекать номера из него и избавиться от лишней пунктуации?
Ответы
Ответ 1
Угу. Тебе нужно это взять. Или вы можете использовать фрагмент ниже...
NSString *cleanedString = [[phoneNumber componentsSeparatedByCharactersInSet:[[NSCharacterSet characterSetWithCharactersInString:@"0123456789-+()"] invertedSet]] componentsJoinedByString:@""];
NSURL *telURL = [NSURL URLWithString:[NSString stringWithFormat:@"tel:%@", cleanedString]];
Примечание: может возникнуть соблазн использовать -stringByTrimmingCharactersInSet:
, но он удаляет только символы в начале и в конце строки, а не в середине.
Ответ 2
Чтобы вернуться к исходному приложению, вы можете использовать telprompt://вместо tel://- подсказка подсказки сначала предложит пользователю, но когда звонок будет завершен, он вернется в ваше приложение:
NSString *phoneNumber = [@"telprompt://" stringByAppendingString:mymobileNO.titleLabel.text];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];
просто обновление выше ответа.
Ответ 3
Здесь прописан простой метод, который можно использовать для совершения вызова и возврата в приложение после завершения вызова.
Добавьте в свой .m файл следующее:
- (void) dialNumber:(NSString*) number{
number = [@"telprompt://" stringByAppendingString:number];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:number]];
}
Затем добавьте следующий код, куда бы вы ни захотели позвонить:
[self dialNumber:@"5031234567"];