集成twilio-voice-react-native与react-native-call-keep时iOS报PushKit初始化错误
iOS端"Failed to initialize PushKit device token"错误解决方案
1. 完善PushKit权限配置
- 在iOS项目的
Info.plist中添加VoIP权限说明:<key>NSPushKitUsageDescription</key> <string>需要使用VoIP推送来处理语音通话</string> - 打开Xcode项目配置,进入
Signing & Capabilities,开启Background Modes并勾选Voice over IP选项。
2. 修正Twilio Voice注册逻辑
Twilio Voice for iOS要求先获取PushKit令牌再完成注册,原有代码缺少Push令牌绑定步骤,调整如下:
const voice = new Voice(); React.useEffect(() => { // 监听PushKit令牌获取事件 const tokenListener = voice.on('token', (pushToken) => { console.log('获取到PushKit令牌:', pushToken); }); return () => tokenListener.remove(); }, []); const callAction = async () => { const accessToken = await getAccessToken(); // 初始化VoIP推送注册表 await voice.initializePushRegistry('voip'); // 完成Twilio注册 await voice.register(accessToken); const twiMLParams = { params: { guestName: `${firstName} ${lastName}`, }, }; const callUUID = getGUID(); const call = await voice.connect(accessToken, twiMLParams); RNCallKeep.startCall(callUUID, "", phoneNumber); };
3. 调整服务初始化顺序
确保RNCallKeep先完成初始化,再启动Twilio Voice的推送配置:
React.useEffect(() => { const initServices = async () => { await initializeCallKeep(); // 初始化Twilio推送注册 await voice.initializePushRegistry('voip'); }; initServices(); }, []);
4. 验证项目配置细节
- 确认Xcode项目
Capabilities中已开启Push Notifications。 - 检查twilio-voice-react-native与react-native-call-keep的版本兼容性,避免因版本冲突导致初始化失败。
内容的提问来源于stack exchange,提问作者sakshya73
相关产品推荐
相关产品推荐

