>웹 프론트엔드 >JS 튜토리얼 >React Native Firebase-클라우드 메시징의 일반적인 문제 해결

React Native Firebase-클라우드 메시징의 일반적인 문제 해결

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-01 13:43:29339검색

Troubleshooting Common Issues of React Native Firebase- Cloud Messaging

출처: npm @react-native-firebase/app

React Native Firebase Cloud Messaging을 구현하는 동안 문제에 직면하고 있나요?

각 플랫폼에서 요구하는 고유한 구성으로 인해 Android와 iOS 모두에서 알림을 원활하게 실행하는 것이 때로는 어려울 수 있습니다.
이 가이드는 React Native에서 FCM(Firebase Cloud Messaging)을 설정하고 몇 가지 일반적인 오류를 해결하는 중요한 단계를 안내합니다.

Firebase 구성:

GoogleService-Info.plist(iOS) 및 google-services.json(Android)을 다운로드하세요.

컴퓨터에서 다운로드한 GoogleService-Info.plist 파일을 선택하고 '필요한 경우 항목 복사' 확인란이 활성화되어 있는지 확인하세요

google-services.json 파일을 다운로드하여 프로젝트 내부의 다음 위치에 배치하세요.
/android/app/google-services.json.

Xcode에서 iOS용 푸시 알림 활성화:

푸시 알림 기능을 프로젝트에 추가해야 합니다. "서명 및 기능" 탭 아래의 "기능" 옵션을 통해 이 작업을 수행할 수 있습니다.
" 기능" 버튼을 클릭하세요.
"푸시 알림"을 ​​검색하세요.

선택하면 해당 기능이 활성화된 다른 기능 아래에 표시됩니다. 검색 시 옵션이 나타나지 않으면 해당 기능이 이미 활성화되어 있을 수 있습니다

백그라운드 가져오기 및 원격 알림 하위 모드와 함께 백그라운드 모드 기능을 활성화해야 합니다. 이는 "서명 및 기능" 탭의 "기능" 옵션을 통해 추가할 수 있습니다.

이제 "백그라운드 가져오기" 및 "원격 알림" 하위 모드가 모두 활성화되어 있는지 확인하세요

React Native FCM 설정 가이드:

공식 Firebase 클라우드 메시징 설정 가이드를 따르세요. 이 가이드에는 Android 및 iOS에서 알림 보내기 및 받기를 시작하는 데 필요한 필수 단계가 포함되어 있습니다. 이 단계를 완료한 후에는 새 캠페인을 구성하여 Firebase 콘솔의 메시지 아래에서 직접 알림을 테스트할 수 있습니다.

참고:
M1 Mac 사용자의 경우 React Native Firebase를 설정할 때 CocoaPods 관련 문제가 흔히 발생합니다. 다음은 몇 가지 빠른 해결 방법입니다.

  1. arch -x86_64 사용 - M1 Mac에서는 CocoaPod와 호환성 문제가 발생할 수 있습니다. x86_64 아키텍처를 사용하려면 arch -x86_64와 함께 명령을 실행하세요.

arch -x86_64 포드 설치

  1. CocoaPods 저장소 업데이트- 오래된 Pod 버전과 관련된 오류가 발생하면 CocoaPods 저장소를 업데이트하세요.

arch -x86_64 포드 저장소 업데이트

  1. ffi 오류 수정- ffi 라이브러리 오류가 발생할 수 있습니다. 이 문제를 해결하려면 해당 아키텍처에 맞는 ffi gem을 설치하세요.

sudo arch -x86_64 gem install ffi

  1. Pod 재설치 - 이 단계 후에 Pod 설치 명령을 다시 실행하세요.

arch -x86_64 포드 설치

이러한 단계를 따르면 React Native 프로젝트용 Pod를 설치하고 관리할 때 M1 Mac의 아키텍처 관련 문제를 해결하는 데 도움이 됩니다.

참고:
Android 13 기기의 경우 푸시 알림에 대한 런타임 권한을 명시적으로 요청해야 합니다. AndroidManifest.xml에 다음 권한을 추가하세요.

그런 다음 코드에서 런타임 시 알림 권한을 요청하세요. 다음과 같이 Android 권한을 직접 처리할 수 있습니다.


import { Platform, PermissionsAndroid } from 'react-native';

async function requestNotificationPermission() {
// Version >= 33(`~project/build.gradle`)
  if (Platform.OS === 'android' ) {
    const granted = await PermissionsAndroid.request(
      PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS,
    );

    if (granted === PermissionsAndroid.RESULTS.GRANTED) {
      console.log('Notification permission granted');
    } else {
      console.log('Notification permission denied');
    }
  }
}


앱 초기화 중 또는 알림 구독 전에 requestNotificationPermission()을 호출하여 사용자가 권한을 부여했는지 확인하세요.

호환성 보장:

설정을 시작하기 전에 @react-native-firebase/app 및 @react-native-firebase/messaging 패키지가 프로젝트에 설치되어 있고 호환되는지 확인하세요.
예상치 못한 통합 문제를 방지하려면 일관된 버전이 중요합니다. 버전 호환성을 확인하려면 공식 React Native Firebase 릴리스 문서를 참조하세요.
호환성 문제를 방지하려면 두 패키지의 최신 버전이 설치되어 있는지 확인하세요.

iOS 기기에서 테스트하는 경우 다음 사항에 유의하세요.

  • 푸시 알림을 받으려면 일반적으로 실제 iOS 기기가 필요합니다.
  • Apple Silicon이 탑재된 macOS 13을 사용하는 경우 iOS 16을 실행하는 iOS 시뮬레이터를 사용하여 테스트할 수도 있습니다.

문제 해결 팁:

설정을 완료한 후에도 여전히 문제가 발생할 수 있습니다. 다음은 몇 가지 일반적인 문제와 해결 방법입니다.

시뮬레이터가 알림을 받지 못함:

iOS 시뮬레이터에 알림이 표시되지 않으면 다음을 시도해 보세요.

  • 모든 콘텐츠와 설정을 삭제하여 시뮬레이터를 다시 시작하거나 재설정하세요.
  • 시뮬레이터를 다시 시작하면 문제가 해결될 수 있으므로 재설정 후 다시 시도하세요.

두 시간 동안 직접 문제를 해결한 후 빠른 재시작이 가장 간단한 해결책이라는 것을 알게 되었습니다!

단계 및 일반적인 문제 확인:
모든 것이 올바르게 구성되었는지 확인하려면 Firebase 가이드의 설정 단계를 다시 확인하세요.

CocoaPod 설치 오류:
다음과 같은 설치 오류가 발생하는 경우:

<br>
   error: RPC failed; curl stream was reset<br>
   error: 6428 bytes of body are still expected<br>
   

네트워크 문제 때문일 수 있습니다. Wi-Fi에서 모바일 핫스팟으로(또는 그 반대로) 전환하고 설치를 다시 시도하세요. 경우에 따라 네트워크를 변경하면 연결 관련 포드 설치 문제가 해결될 수 있습니다. 그래도 문제가 해결되지 않으면 CocoaPods 캐시 지우기, Xcode 업데이트 등 추가 문제 해결 팁을 시도해야 할 수도 있습니다.

iOS에서 HTTP URL 허용(앱 전송 보안):
API 요청에 HTTP URL(HTTPS가 아님)을 사용하는 경우 ATS(앱 전송 보안) 제한으로 인해 연결이 차단되지 않도록 iOS Info.plist 파일을 업데이트해야 합니다. Info.plist 파일에 다음 줄을 추가하세요:


import { Platform, PermissionsAndroid } from 'react-native';

async function requestNotificationPermission() {
// Version >= 33(`~project/build.gradle`)
  if (Platform.OS === 'android' ) {
    const granted = await PermissionsAndroid.request(
      PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS,
    );

    if (granted === PermissionsAndroid.RESULTS.GRANTED) {
      console.log('Notification permission granted');
    } else {
      console.log('Notification permission denied');
    }
  }
}


이렇게 하면 앱이 간섭 없이 HTTP 요청을 할 수 있습니다. 프로덕션 앱에서는 이 설정에 주의하고 가능한 경우 개발 환경으로 제한하십시오.

ATS(App Transport Security) 호환성 보장:
iOS의 경우 사용 중인 모든 HTTPS 엔드포인트가 ATS를 준수하는지 확인하세요. 스테이징 서버 또는 자체 서명 인증서로 테스트하는 경우 Firebase가 APN(Apple 푸시 알림 서비스)과 통신하려면 보안 연결이 필요하므로 ATS와 호환되는지 확인하세요.

결론:
React Native에서 Firebase 클라우드 메시징을 설정하는 것은 간단할 수 있지만 사소한 설정 실수나 기기 구성 문제로 인해 문제가 발생할 수 있습니다. 이 가이드와 문제 해결 팁을 따르면 알림을 원활하게 실행하는 데 도움이 됩니다. 추가 문제가 있는 경우 공식 문서, 포럼 또는 GitHub 토론을 확인하여 다른 개발자가 공유한 솔루션을 찾아보세요.

행복한 코딩하세요!!!!

위 내용은 React Native Firebase-클라우드 메시징의 일반적인 문제 해결의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.