iPhone SDK:Запуск приложения после завершения вызова

StackOverflow https://stackoverflow.com/questions/2312666

  •  22-09-2019
  •  | 
  •  

Вопрос

Как мне совершить звонок из приложения или запустить приложение сразу после завершения вызова?Я знаю, что это возможно, потому что некоторые приложения в app Store уже делают это.

Это было полезно?

Решение

Я получил этот код с сайта Apple, и он отлично работает:

-(IBAction) dialNumber:(id)sender{

NSString *aPhoneNo = [@"tel://" stringByAppendingString:[itsPhoneNoArray objectAtIndex:[sender tag]]] ; NSURL *url= [NSURL URLWithString:aPhoneNo];
 NSURL  *url= [NSURL URLWithString:aPhoneNo];
NSString *osVersion = [[UIDevice currentDevice] systemVersion];

if ([osVersion floatValue] >= 3.1) { 
UIWebView *webview = [[UIWebView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame]; 
[webview loadRequest:[NSURLRequest requestWithURL:url]]; 
webview.hidden = YES; 
// Assume we are in a view controller and have access to self.view 
[self.view addSubview:webview]; 
[webview release]; 
} else { 
// On 3.0 and below, dial as usual 
[[UIApplication sharedApplication] openURL: url];
}


}

Другие советы

Я думаю, что в этом есть две части

  1. Приложение уже запущено, и пользователь получает приглашение, указывающее на поступление телефонного звонка, и просит принять или отклонить
  2. Пользователь получает телефонный звонок, но приложение не запущено

В первом случае ваш UIApplicationDelegate Пользовательское приложение будет получать сообщения application:willChangeStatusBarFrame:, application:didChangeStatusBarFrame:, applicationWillResignActive:, и applicationDidBecomeActive: все потенциально несколько раз, все зависит от того, решит ли пользователь ответить на вызов или нет, и, возможно applicationWillTerminate: если они решат оставить вашу заявку или нет.Вы также можете наблюдать за этими событиями с помощью Центр идентификации NSNotificationCenter из класса, который не зарегистрирован в качестве делегата приложения, смотрите Раздел "Уведомления" в Пользовательское приложение ссылка на класс для получения подробной информации.

Во втором случае я не знаю, есть ли официальный SDK для запуска вашего приложения по окончании телефонного звонка.Не могли бы вы предоставить список приложений, которые это делают?

Редактировать:

Думаю, теперь я понимаю, что вы имеете в виду.Вам следует последовать совету от @jessecurry, openURL на UIApplication с помощью tel: протокол сделает телефонный звонок.Что касается их заявления о том, что они "делают невозможное" и не выходят из приложения при телефонном звонке, я не уверен, как они это сделали, потому что я этого не писал.Они могли бы использовать внешнюю службу VOIP, такую как Skype, или просто загружать tel: URL-адрес внутри невидимой веб-таблицы.Ни то, ни другое я не могу прокомментировать, потому что я этого не пробовал.

Это делается с помощью telprompt вместо tel.пожалуйста, посмотрите на следующий код

[[UIApplication sharedApplication] openURL:[URL-адрес NSURL со строкой:@"telprompt:18004912200"]];

если вы хотите совершить звонок из своего приложения, вы можете использовать tel: url-адрес.

Вот метод, который принимает телефонный номер в виде строки и инициирует вызов.

- (void)dialNumber: (NSString*)telNumber
{
    // fix telNumber NSString
    NSArray* telComponents = [telNumber componentsSeparatedByCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
    telNumber = [telComponents componentsJoinedByString: @""];

    NSString* urlString = [NSString stringWithFormat: @"tel:%@", telNumber];
    NSURL* telURL = [NSURL URLWithString: urlString];
    //NSLog( @"Attempting to dial %@ with urlString: %@ and URL: %@", telNumber, urlString, telURL );

    if ( [[UIApplication sharedApplication] canOpenURL: telURL] )
    {
        [[UIApplication sharedApplication] openURL: telURL];
    }
    else
    {
        UIAlertView* alert = [[UIAlertView alloc] initWithTitle: NSLocalizedString( @"Dialer Error", @"" ) 
                                                        message: [NSString stringWithFormat: NSLocalizedString( @"There was a problem dialing %@.", @"" ), telNumber] 
                                                       delegate: nil 
                                              cancelButtonTitle: NSLocalizedString( @"OK", @"" ) 
                                              otherButtonTitles: nil];
        [alert show];
        [alert release];
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top