我正在尝试制作一个应用程序,它将从数字列表中一个接一个地拨打电话

时间:2016-09-14 02:55:29

标签: android ios angularjs node.js excel

我正在为正在销售的朋友开发一个应用程序,这个应用程序会一个接一个地拨打电话,一旦一个电话断开连接,它就会自动拨打列表中的另一个号码。此列表可以从和xml数据源或json或mongodb或甚至excel表中读取。

这可能是一个ios应用程序,它从终点读取数据并存储它们,并且可以在任何时候发起呼叫,并且在完成所有呼叫之前它不会停止。

只有在第一次通话结束后才会进行下一次通话。

我正在考虑使用基于节点的网络应用程序使用谷歌语音触发链。

我没有使用ios / android apis的经验但我愿意继续努力,如果它在该平台上是可行的。

注意:我们要避免的是

的整个过程
  1. 查找电话号码。
  2. 触摸挂断,然后点击另一个电话号码。
  3. 当前呼叫断开后,它应自动触发下一个呼叫。
  4. 我们也试图避免像twillo这样的付费服务。
  5. 提前致谢:)

2 个答案:

答案 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)

对于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的事件,检测用户是否已完成最后一次通话,我们的应用再次激活,然后拨打下一个电话。

或者你可以试试Demo here