Android 上的 VoIP 通话
Pushwoosh 支持 Android 上的 VoIP 风格通话通知,通过 pushwoosh-calls 模块实现。这使得使用 Android 的电信堆栈能够实现原生通话 UI 和生命周期管理。
1. 添加 pushwoosh-calls 模块
Anchor link to请确保在您的项目中包含 pushwoosh-calls 依赖项。
Gradle:
dependencies { implementation 'com.pushwoosh:pushwoosh-calls:<latest-version>'}将 <latest-version> 替换为 Maven Central 中的当前版本。
2. 请求通话权限
Anchor link to使用辅助函数在运行时请求所需权限:
import com.pushwoosh.calls.PushwooshCallSettings;
PushwooshCallSettings.requestCallPermissions();这将处理
READ_PHONE_NUMBERS等权限的请求,这些权限对于正确的通话处理是必需的。
3. 实现 CallEventListener 并在 Manifest 中注册
Anchor link to要在您的应用中处理来电和事件,请实现 CallEventListener 接口。
Java 示例
Anchor link topublic class DemoCallEventListener implements CallEventListener {
@Override public void onAnswer(@NonNull PushwooshVoIPMessage voIPMessage, int videoState) { // 实现此方法以导航到您的通话中 UI Intent intent = new Intent(context, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); }
@Override public void onReject(@NonNull PushwooshVoIPMessage voIPMessage) { // 覆盖此方法以处理已拒绝的通话 }
@Override public void onDisconnect(@NonNull PushwooshVoIPMessage voIPMessage) { // 覆盖此方法以处理已断开连接的通话 }
@Override public void onCreateIncomingConnection(@Nullable Bundle payload) { // 这是通话通知有效负载在您的应用中可访问的最早点, // 使用它来准备您的应用 UI,以便用户与通话通知进行交互 }
@Override public void onCallAdded(@NonNull PushwooshVoIPMessage voIPMessage) { // InCallService 的扩展方法,为配对的可穿戴设备提供自定义选项 }
@Override public void onCallRemoved(@NonNull PushwooshVoIPMessage voIPMessage) { // InCallService 的扩展方法,为配对的可穿戴设备提供自定义选项 }}AndroidManifest.xml
Anchor link to使用 <meta-data> 标签声明您的监听器类:
<meta-data android:name="com.pushwoosh.CALL_EVENT_LISTENER" android:value="com.pushwoosh.demoapp.DemoCallEventListener" />4. 配置通话设置(可选)
Anchor link to使用 PushwooshCallSettings 来微调通话行为、声音和显示设置。
示例用法
Anchor link toimport com.pushwoosh.calls.PushwooshCallSettings
PushwooshCallSettings.setPhoneAccount("com.pushwoosh.voip")PushwooshCallSettings.setPhoneAccountHandle("PushwooshCallHandle")PushwooshCallSettings.setIncomingCallChannelName("Incoming Calls")PushwooshCallSettings.setOngoingCallChannelName("Ongoing Calls")PushwooshCallSettings.setCallSound("custom_ringtone.mp3")