Выполнение телефонного звонка в приложении 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"
. Как я могу позвонить с таким номером телефона? Нужно ли вручную извлекать из него цифры и избавляться от всех лишних знаков препинания?
3 ответа:
Ага. Ты должен сам их вытащить. Или вы можете использовать фрагмент ниже...
NSString *cleanedString = [[phoneNumber componentsSeparatedByCharactersInSet:[[NSCharacterSet characterSetWithCharactersInString:@"0123456789-+()"] invertedSet]] componentsJoinedByString:@""]; NSURL *telURL = [NSURL URLWithString:[NSString stringWithFormat:@"tel:%@", cleanedString]];
Примечание: у вас может возникнуть соблазн использовать
-stringByTrimmingCharactersInSet:
, но это только удаляет символы в начале и конце строки, а не если они появляются в середине.
Чтобы вернуться к исходному приложению, вы можете использовать telprompt:// вместо tel:// - подсказка tell сначала предложит пользователю, но когда вызов будет завершен, он вернется к вашему приложению:
NSString *phoneNumber = [@"telprompt://" stringByAppendingString:mymobileNO.titleLabel.text]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];
Просто обновление выше ответа.
Вот простой метод, который можно использовать для выполнения вызова и возврата в приложение после завершения вызова.
Добавьте следующее к вашему .m file
- (void) dialNumber:(NSString*) number{ number = [@"telprompt://" stringByAppendingString:number]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:number]]; }
Затем добавьте следующий код, откуда вы хотите позвонить:
[self dialNumber:@"5031234567"];