Подтвердить что ты не робот

Выполнение телефонного звонка в приложении 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". Как я могу позвонить с таким номером телефона? Нужно ли вручную извлекать номера из него и избавиться от лишней пунктуации?

4b9b3361

Ответ 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"];