我已在我的应用中集成了Twilio SDK。在我的应用程序启动至少一次后,我可以接收来电。
但如果用户重新开机并且没有启动我的应用,我就无法通过电话与他联系。
如何让Twilio SDK收听来自设备启动的来电? (无需至少启动一次我的应用程序)
答案 0 :(得分:2)
Twilio Client SDK不提供持久服务。
此外,Android SDK不为用户应用程序提供持久服务的可靠机制。系统应用程序可以保留服务。
但是,可以通过创建BroadcastReceiver并将其注册为接收ACTION_BOOT_COMPLETED
来完成此用例。 BroadcastReceiver
然后将处理使客户端可以接听电话的逻辑。
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<receiver
android:name="com.example.MyBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
创建BroadcastReceiver以在接收Intent广播时启动Twilio Client SDK。要启动SDK,必须执行以下步骤:
Checkout Twilio的快速入门Tutorial
com.example public class MyBroadcastReceiver extends BroadcastReceiver implements DeviceListener { private Device clientDevice; public void onReceive(final Context context, Intent intent) { // You'll need a mechanism to retrieve this time sensitive token. final String capabilityToken = "YOUR_JWT_TOKEN"; // Initialize the Twilio Client SDK Twilio.initialize(context.getApplicationContext(), new Twilio.InitListener() { @Override public void onInitialized() { // Create a Device clientDevice = Twilio.createDevice(capabilityToken, MyBroadcastReceiver.this); // Providing a PendingIntent to the Device Intent intent = new Intent(context.getApplicationContext(), YourApplicationActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(context.getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); clientDevice.setIncomingIntent(pendingIntent); } @Override public void onError(Exception e) { Log.e("MyBroadcastReceiver", e.toString()); } }); // Implements DeviceListener methods } }
或者,BroadcastReceiver可以启动您的一个服务,然后处理与Twilio Client SDK相关的任何业务逻辑。