Я застрял на этом в течение довольно долгого времени. Я использую Sinch для установления звонков.
В этом случае:
- Рабочий случай: оба пользователя открыли одно и то же действие.
Пользователь А --call--> Пользователь Б
Пользователь Б ‹---принимает вызов- Пользователь А
Пользователь B принимает вызов.
- Нерабочий случай: у пользователя Б не открыто приложение. Я использую FCM для отправки уведомления о звонке.
Пользователь А --call--> Пользователь Б
Пользователь Б ‹—получает уведомление о вызове— Пользователь А
Пользователь Б --открывает--> Активность звонков -> но входящего звонка нет
Код вызывающего абонента:
if (this.mCall == null) {
mStatusInfo.setText("Calling...");
this.mCall = this.mSinchClient.getCallClient().callUser(mRecipientId);
this.mCall.addCallListener(new SinchCallListener());
//Test
String callId = this.mCall.getCallId();
this.sendNotification(mTalkPath,mAuthor,mRecipient, callId);
}
Код получателя:
private class SinchCallClientListener implements CallClientListener {
@Override
public void onIncomingCall(CallClient callClient, Call incomingCall) {
//Pick up the mCall!
mStatusInfo.setText("Incoming call...");
mCall = incomingCall;
mCall.addCallListener(new SinchCallListener());
String metaData = String.format("%s, %s", mRecipient.getGender(), mRecipient.getBirthDate());
mInfoText.setText(metaData);
}
}
Есть ли способ принять вызов с помощью FCM? Может быть, callId может быть ключом к решению этой проблемы?