2016-04-21 54 views
3

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

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

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

回答

2

的Twilio客户端SDK不提供持久的服务。

此外,Android SDK并未为用户应用程序的持久性服务提供可靠的机制。系统应用程序可以坚持服务。

Persistent Services

然而,这种使用情况下可以通过创建一个BroadcastReceiver并注册以接收ACTION_BOOT_COMPLETED来完成。然后BroadcastReceiver 将处理使客户端可用于接收呼叫的逻辑。

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

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

  • 在你的元素下的AndroidManifest.xml添加
  • <receiver 
         android:name="com.example.MyBroadcastReceiver"> 
         <intent-filter> 
          <action android:name="android.intent.action.BOOT_COMPLETED" /> 
         </intent-filter> 
    </receiver> 
    
  • 创建的BroadcastReceiver接收意图的广播时,启动Twilio客户端SDK。要启动SDK下面的步骤必须执行:

    1. 初始化Twilio客户端SDK
    2. 检索客户的JWT能力
    3. 与令牌
    4. 创建一个设备提供一个的PendingIntent到设备允许您接收来电 - 使用示例中的活动。
  • 结帐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 
        } 
    } 
    

    另外,在广播接收器可以启动你的服务,然后处理有关Twilio客户端SDK任何业务逻辑之一。