Выполнение телефонного звонка в приложении 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 33

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"];