You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure通信Calling SDK(安卓/iOS)来电推送通知问题求助

React Native集成Azure Communication Calling SDK来电推送问题

问题背景

我在React Native应用中集成Azure Communication Calling SDK实现语音通话功能:

  • 应用处于前台且提前初始化IncomingCallListener时,来电功能正常;
  • 若先发起通话,再在接收端设备初始化IncomingCallListener,则无法收到来电。

按照要求在.NET服务器上配置了来电推送通知(iOS使用VoIP推送),发起来电时能收到Azure Event Grid的事件Webhook,但Azure Calling SDK对通知payload有特定格式要求,该格式未公开,导致无法正确处理来电推送。

另外,尝试通过Azure Notification Hub接收Azure直接推送的来电payload时,通知始终失败,错误为FCMv1 Authorization Errors。

处理来电payload的代码

public void setUpIncomingCall(Map<String, String> map, String acsToken, String displayName, Context context) {
    try{
        if (callAgent == null) {
            CallAgentOptions callAgentOptions = new CallAgentOptions();
            callAgentOptions.setDisplayName(displayName);

            callClient.createCallAgent(context, new CommunicationTokenCredential(acsToken), callAgentOptions).thenAccept(callAgent1 -> {
                callAgent = callAgent1;

                Log.e("incomingCall","created call agent");

                incomingCallListener = new IncomingCallListener() {
                    @Override
                    public void onIncomingCall(IncomingCall incomingCall) {
                        Log.e("setUpIncomingCall", "Incoming call received");
                        currentIncomingCall = incomingCall;
                    }
                };
                callAgent.addOnIncomingCallListener(incomingCallListener);

                PushNotificationInfo pushNotificationInfo = PushNotificationInfo.fromMap(map);

                if (pushNotificationInfo != null) {
                    callAgent.handlePushNotification(pushNotificationInfo).thenAccept(aVoid -> {
                        Log.e("handleCallPush", "Push payload mapping success");
                    }).exceptionally(throwable -> {
                        throwable.printStackTrace();
                        Log.e("handleCallPush", "Failed to handleCallPush", throwable);
                        return null;
                    });
                } else {
                    Log.e("incomingCall","incomingCall error pushNotificationInfo null");
                }

            }).exceptionally(throwable -> {
                Log.e("incomingCall", "setUpIncomingCall error", throwable);
                return null;
            });
        }
        else {
            Log.e("incomingCall","existing call agent");
            incomingCallListener = new IncomingCallListener() {
                @Override
                public void onIncomingCall(IncomingCall incomingCall) {
                    Log.e("setUpIncomingCall", "Incoming call received");
                    currentIncomingCall = incomingCall;
                }
            };
            callAgent.addOnIncomingCallListener(incomingCallListener);

            PushNotificationInfo pushNotificationInfo = PushNotificationInfo.fromMap(map);

            if (pushNotificationInfo != null) {
                callAgent.handlePushNotification(pushNotificationInfo).thenAccept(aVoid -> {
                    Log.e("handleCallPush", "Push payload mapping success");
                }).exceptionally(throwable -> {
                    throwable.printStackTrace();
                    Log.e("handleCallPush", "Failed to handleCallPush", throwable);
                    return null;
                });
            } else {
                Log.e("incomingCall","incomingCall error pushNotificationInfo null");
            }
        }
    } catch (Exception exception) {
        exception.printStackTrace();
        Log.e("setUpIncomingCall", "setUpIncomingCall error", exception);
    }
}

求助需求

  • 告知Azure Calling SDK要求的来电推送payload格式;
  • 解决Azure Notification Hub出现的FCMv1 Authorization Errors问题。

内容的提问来源于stack exchange,提问作者Fahim Jubayer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 01:33:17