我正在为正在销售的朋友开发一个应用程序,这个应用程序会一个接一个地拨打电话,一旦一个电话断开连接,它就会自动拨打列表中的另一个号码。此列表可以从和xml数据源或json或mongodb或甚至excel表中读取。
这可能是一个ios应用程序,它从终点读取数据并存储它们,并且可以在任何时候发起呼叫,并且在完成所有呼叫之前它不会停止。
只有在第一次通话结束后才会进行下一次通话。
我正在考虑使用基于节点的网络应用程序使用谷歌语音触发链。
我没有使用ios / android apis的经验但我愿意继续努力,如果它在该平台上是可行的。
注意:我们要避免的是
的整个过程提前致谢:)
答案 0 :(得分:0)
理论上,您可以自动拨打应用程序呼叫,等待呼叫结束,然后自动启动下一个呼叫。然而,这不是最佳做法,因为它可能产生费用。此外,一些OEM实际上阻止了自动拨号,他们只将数字按到键盘上,并让用户按下呼叫按钮。
这是为了防止攻击擦除您的设备(密码)或将您的IMEI暴露给其他人。这种行为是不一致的 - 有些设备有补丁,有些则没有补丁。这是分散的Android平台的本质。
总而言之,您完成的应用程序可以在某些设备上运行,但不适用于其他设备。
不要引用我这个,但我认为系统应用程序可以随时自动拨打电话。因此,您可以考虑生根工作设备并将其安装为系统应用程序。或者,您可以获取每个设备的固件包,修改它们以将您的应用程序包含为系统,并根据需要包含闪存。这通常意味着您不需要像生根,注入应用程序,然后取消根据那样跳过复杂的环节。
我建议您首先查看您的标准,并确保自动呼叫是绝对必要的。恕我直言,自动召唤是一种非常糟糕的做法。
编辑:此答案适用于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);
这将启动拨号器并输入号码,但它不会自动呼叫,您必须按呼叫按钮。
如果真的非常坚持进行自动调用,那么我建议在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任务是异步的,这意味着他们会毫不拖延地漫步。
答案 1 :(得分:0)
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的事件,检测用户是否已完成最后一次通话,我们的应用再次激活,然后拨打下一个电话。
或者你可以试试Demo here!