繁体   English   中英

让Twilio收听来自设备启动的来电

[英]Make Twilio listen for incoming call from device start up

我在我的应用程序中集成了Twilio SDK。 我的应用程序启动至少一次后,我可以收到来电。

但是如果用户重新启动手机并且没有启动我的应用程序,我就无法通过电话与他联系。

如何让Twilio SDK收听来自设备启动的来电? (无需至少启动一次我的应用程序)

Twilio Client SDK不提供持久性服务。

此外,Android SDK不为用户应用程序提供持久服务的可靠机制。 系统应用程序可以保留服务。

持久服务

但是,可以通过创建BroadcastReceiver并将其注册为接收ACTION_BOOT_COMPLETED来完成此用例。 然后,BroadcastReceiver将处理使客户端可用于接收呼叫的逻辑。

  1. 在AndroidManifest.xml中添加所需的权限:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

  1. 在您的元素下的AndroidManifest.xml中添加

<receiver
        android:name="com.example.MyBroadcastReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
</receiver>
  1. 创建BroadcastReceiver以在接收Intent广播时启动Twilio Client SDK。 要启动SDK,必须执行以下步骤:

    1. 初始化Twilio Client SDK
    2. 检索客户端的JWT功能
    3. 使用令牌创建设备
    4. 为设备提供PendingIntent以允许您接收传入呼叫 - 使用示例中的活动。

Checkout Twilio的快速入门教程

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相关的任何业务逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM