我正在基于PJSUA2构建具有推送通知支持的android VOIP应用程序。
我需要将推送通知(FCM)令牌作为联系人uri参数发送到服务器(在我的情况下为星号),以便我可以从服务器中使用脚本来检索它并发送通知以唤醒客户端,然后再发送来电请求。
我将参数放在带有的uri参数中
acfg.getSipConfig().setContactUriParams(buildParams(contactParameters));
contactParams
是具有参数名称和值的HashMap<String, String>
,而buildParams
是以下方法:
private String buildParams(Map<String, String> params) {
StringBuilder builder = new StringBuilder();
for (String k : params.keySet()) {
builder.append(';');
builder.append(k);
String v = params.get(k);
if (v != null && v.trim().length() > 0) {
builder.append("=\"");
builder.append(v);
builder.append('\"');
}
}
return builder.toString();
}
没有FCM参数,一切正常,但是
;pn-provider="fcm";pn-tok="LONG FCM TOKEN"
使电话在32秒后挂断(请参阅问题PJSUA2 Android - Incoming calls drop after 32 seconds);pn-provider="fcm"
可行我认为这可能是“无效字符问题”,但实际上似乎是“最大长度问题”。
是否有Contact头的最大长度或URI的最大长度?如果是,是PJSIP限制还是SIP限制?