Я разрабатываю приложение для своего друга, который продается, это приложение будет делать телефонные звонки один за другим, как только один телефонный звонок отключится, он автоматически совершит вызов другого номера из списка. Этот список можно прочитать из источника данных xml или json или mongodb или даже из листа excel.
Это может быть приложение ios, которое считывает данные из конечной точки и сохраняет их и может инициировать вызов в любой точке, и оно не будет останавливаться, пока не будут выполнены все вызовы.
Следующий вызов будет выполнен только после завершения первого вызова.
Я думаю об использовании веб-приложения на основе узлов, используя голос Google, чтобы вызвать цепочку.
У меня нет опыта работы с ios/android apis, но я готов работать над этим, если это жизнеспособная вещь на этой платформе.
Примечание: то, что мы пытаемся избежать, - это весь процесс
Заранее спасибо :)
для IOS вы можете использовать CTCallCenter
self.callCenter = [[CTCallCenter alloc] init];
self.callCenter.callEventHandler = ^(CTCall *call){
if ([call.callState isEqualToString: CTCallStateConnected])
{
//NSLog(@"call stopped");
}
else if ([call.callState isEqualToString: CTCallStateDialing])
{
}
else if ([call.callState isEqualToString: CTCallStateDisconnected])
{
//NSLog(@"call played");
}
else if ([call.callState isEqualToString: CTCallStateIncoming])
{
}
};
Загрузите список телефонов, зайдите в список телефонов, сделайте звонок, слушайте CTCallCenter и appdelegate. Событие, обнаружите, что пользователь завершил последний звонок, наше приложение снова активировано, затем выполните следующий вызов.
Или вы можете попробовать Демо !
Вы могли бы теоретически сделать вызов приложения автоматически, дождаться окончания вызова и затем инициировать следующий вызов автоматически. Однако это не самая лучшая практика, поскольку она может нести плату. Кроме того, некоторые OEM-производители фактически блокируют автоматический набор номера, и они только нажимают номера на клавиатуре и заставляют пользователя нажимать кнопку вызова.
Это делается для предотвращения атак от вытирания вашего устройства (секретного кода) или предоставления IMEI другим. Такое поведение непоследовательно - некоторые устройства имеют патч, другие - нет. Это характер фрагментированной платформы Android.
Итак, в итоге ваше готовое приложение будет работать на некоторых устройствах, но не на других.
Не цитируйте меня на этом, но я думаю, что системным приложениям разрешено автоматически размещать телефонные звонки, когда захотят. Таким образом, вы можете учесть свои рабочие устройства и установить их в качестве системных приложений. В качестве альтернативы вы можете захватить пакеты прошивки для каждого устройства, изменить их, чтобы включить приложение в качестве системы и вспышки, если необходимо. Это обычно означает, что вам не нужно перепрыгивать через сложные обручи, такие как укоренение, впрыскивание приложения и последующее извлечение.
Я предлагаю вам сначала просмотреть ваши критерии и убедиться, что автоматическое вызов абсолютно необходимо. ИМХО, это очень плохая практика для автоматического вызова.
EDIT: этот ответ предназначен для устройств Android. Для iOS я понятия не имею, поскольку у меня нет устройства Apple. Сожалею.
EDIT2: Я забыл включить код. Скажем, я хочу набрать номер, но дождитесь подтверждения пользователем вызова. Найдите, где вы хотите набрать код. Предположим, что моя активность имеет только один номер телефона, но вы можете использовать if (arraySum) для цикла.
number = "01012345678";
String uri = "tel:" + Integer.toString(number) ;
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse(uri));
startActivity(intent);
Это запустит Dialer и введите номер, но он не будет звонить автоматически, и вам придется нажать кнопку вызова.
Если вы действительно настаиваете на автоматических вызовах, я предлагаю добавить это в AndroidManifest.xml.
<uses-permission android:name="android.permission.CALL_PHONE" /> //This is the standard permission
<uses-permission-sdk-23 android:name="android.permission.CALL_PHONE" /> //This is the new practice starting from Marshmallow onwards
Выберите между ними, но я рекомендую использовать новую практику, потому что она удаляет диалоговое окно подтверждения разрешения при установке приложения из Play Маркета.
После того, как вы определите свои разрешения, найдите ту часть, где вы набираете номер и меняете код:
number = "01012345678";
String uri = "tel:" + Integer.toString(number) ;
Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse(uri));
startActivity(intent);
И он начнет звонить.
Помните - не забудьте дождаться окончания вызова перед началом следующего цикла. Задачи Android являются асинхронными, то есть они будут работать без задержек.