Android 에서의 VoIP 통화
Pushwoosh 는 pushwoosh-calls 모듈을 사용하여 Android 용 VoIP 스타일 통화 알림을 지원합니다. 이를 통해 Android 의 텔레콤 스택을 사용하여 네이티브 통화 UI 및 수명 주기 관리가 가능합니다.
1. pushwoosh-calls 모듈 추가
Anchor link topushwoosh-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 toPushwooshCallSettings 를 사용하여 통화 동작, 소리 및 표시 설정을 세부 조정합니다.
사용 예시
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")