inflearn logo
강의

講義

知識共有

React Native with Expo: ZeroChoからしっかり学ぶ

デプロイがこんなに簡単なの…?

배포후 알람이 정상작동안합니다.

197

chl9010309961

投稿した質問数 7

0

안드로이드 환경에서 apk를 만들어서

 

다른사람의 폰에 깔아보았습니다

 

apk의 pushtoken을 서버에 잘 담아서 보냈으나,

expogo가 깔려있는앱에는 알람이 정상적으로 오지만, 깔려있지 않은앱에서는 알람이 안옵니다

어떻게 해결할수있을까요? 백엔드코드 전달드립니다.

 

// 푸시 알림 전송 함수 정의
function sendPushNotification($expoPushToken, $title, $body, $data = []) {
    $message = [
        'to' => $expoPushToken,
        'sound' => 'default',
        'title' => $title,
        'body' => $body,
        'data' => $data,
    ];

    $ch = curl_init('https://exp.host/--/api/v2/push/send');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Accept: application/json',
        'Accept-Encoding: gzip, deflate',
        'Content-Type: application/json',
    ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($message));

    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    if ($httpCode != 200) {
        throw new Exception('HTTP 오류! 상태 코드: ' . $httpCode);
    }

    $result = json_decode($response, true);
    if ($result['data']['status'] === 'error') {
        throw new Exception('푸시 알림 전송 오류: ' . json_encode($result['data']['details']));
    }

    return $result['data']['id'];
}

에러내용 :

{"error":"InvalidCredentials","fault":"developer"}

react react-native 하이브리드-앱 typescript expo

回答 4

1

zerocho

https://docs.expo.dev/push-notifications/fcm-credentials/

이 과정 진행하셨죠??

expo go가 있을 때만 푸쉬알림이 전송된다는게 뭔가 지금 앱이 아니라 expo go로 푸쉬알림을 전송하고 계신것 같은데요

expo go 앱 말고 apk로 설치한 푸쉬토큰이 서버에 저장된 것이 맞나 확인해보세요. 푸쉬토큰을 텍스트나 Alert로 확인해보시면 더 쉽습니다.

0

simjeongwoo

혹시 해결하셨을까요 ?
저도 expo go 환경에서는 api 호출이 정상적으로 이루어지는데,

빌드한 apk 파일을 설치해서 테스트 해보면 api 요청을 통해 데이터 받아오는 부분이 전부 작동을 안하고 있습니다.ㅠㅠ

1

chl9010309961

안드로이드와 아이폰 둘다 production으로 하시고 apk 혹은 아이폰앱으로 설치 후

보낼때에도 백엔드에 production용으로 google or ios파일 잘들어가있나 확인하신후 보내면 정상적으로 알람이

갈거에요~

0

chl9010309961

네 apk로 설치한 앱에서 pushtoken을 받아서(Notifications.getPermissionsAsync();) 서버에 저장하여 사용하고있습니다.

 

expogo가 깔린폰에서는 정상적으로 알람은 오고있습니다.

지금 앱이 아니라 expo go로 푸쉬알림을 전송하고 계신것 같은데요

=> 혹시 아래 코드가 잘못된걸까요?

$ch = curl_init('https://exp.host/--/api/v2/push/send');

 

0

zerocho

아뇨 주소는 맞습니다. 다만 apk로 설치한 앱의 푸쉬토큰이 아니라 엑스포 고 앱의 푸쉬토큰을 서버에 저장하신게 아닌가 해서요. 그러니까 엑스포 고를 깔아야지만 알림이 오는 게 아닐까요?

0

chl9010309961

옆자리에 있는 사람의 폰에서 apk로 깐 앱에서 회원가입해서 로그인하면

Notifications.getExpoPushTokenAsync(); 해당코드로 token을 가져오고

setPushToken(token.data); 그 토큰을 이렇게 저장하는데

혹시 getExpoPushToken이 잘못된걸까요?

0

zerocho

토큰이 잘못된 것 같지는 않은데 InvalidCredentials 에러 자체는 FCM 설정 문제거든요. 그런데 일단 또 expo go가 있다고 하면 알림 자체는 오기도 하고

0

zerocho

https://expo.dev/

여기에서 자신의 프로젝트 누르고 push notification 메뉴 가보면 실패한 것으로 뜨고 계신가요?

0

chl9010309961

혹시 APK로 보내면 아래와 같이 보내야되는건아닐까요?

image.png


0

chl9010309961

expo로 보내는건 expo 깔려져있는 안드로이드폰에서만 알람이 울리더라구요~

ExponentPushToken[-ky5fWKeQ2mNVJZdOzR0c0] : 알람울림 ( expogo 깔린폰에서 )

dvOvB9RTT1a78T-l3_JZQ2:APA91bFy7jiWpKfCdnpVJnR-f_J4nSd5Z11qbWn3AUMVCzKQ60J-iPQ25VnWQ9neMVn0XhhIC04aqSYIObAzDhJQLh0BD2JcWavVii1tGwdPk3ieItK2ebE : 알람 안울림 ( expogo 안깔린폰에서 )

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 최우뚝님.

Expo로 만든 React Native 앱에서 푸시 알림이 제대로 작동하지 않는 문제는 여러 가지 원인으로 발생할 수 있습니다. 특히, 다른 사용자에게 APN 또는 FCM(예: Google Play Services) 요구 사항이 충족되지 않는 경우 문제가 될 수 있습니다. 지금 설명하신 오류 메시지 “InvalidCredentials”는 주로 자격 증명 문제를 나타낼 수 있습니다.

다음은 문제를 해결하는 데 도움이 될 수 있는 몇 가지 팁입니다:

1. Expo Push Token 화인

expoPushToken이 올바르게 생성되어 있는지 확인하세요. 토큰이 유효하지 않다면 알림이 전달되지 않습니다. Expo 클라이언트를 사용하지 않는 경우에도 FCM 토큰을 올바르게 설정해야 합니다.

2. Expo 서버 인증 확인

Expo 서버에 대한 인증이 정확히 설정되어 있는지 확인해보세요. Expo 서버 사용을 위한 API 키 또는 자격 증명이 있다면, 그것이 정확히 설정되어 있는지 검토해야 합니다.

3. FCM 설정 확인

안드로이드 기기에서 FCM을 사용한다면, Firebase Console에서 올바르게 설정되었는지, Google Services JSON 파일이 프로젝트에 포함되어 있는지 확인하세요.

4. Expo Eject 확인

Expo로 앱을 빌드한 후 Eject한 상태라면, 푸시 알림 설정이 네이티브 환경(Android/iOS)에서도 제대로 이식되었는지 확인하세요.

유사한 문제 해결 참조 링크

다음 링크에서 관련한 문제 해결법들을 확인할 수 있습니다:

일단은 위의 확인 사항들을 체크해보시고, 필요하다면 인증 정보를 다시 생성하거나 Expo 프로젝트 설정을 다시 점검해보세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

expo-blur 사용하면서 생긴 버그입니다.

0

113

3

router.navigate 동작이 달라졌을까요?

0

64

1

Toast 기능

0

73

2

onEndReached 함수가 바로 호출 되지 않는 이슈

1

63

1

expo push service에 관한 질문

0

79

2

ios에서 개발중이신 분들은

1

85

1

[질문아님] tabBarLabel 대신 tabBarShowLabel

1

58

1

Location.getCurrentPositionAsync({}); 에러

1

124

3

.

0

121

2

EAS preview 빌드 후 Device에서 카카오 로그인 브라우저가 안켜짐

0

118

2

폴더 구조 관련 질문

0

132

2

혹시 리액트네이티브 관련해서 좋은 참고서도 있을까요??

0

105

1

제로초님께서는 Nativewind는 사용안하지는지 궁금합니다.

1

266

2

.

0

88

2

eas build:configure 안되는데, "git"이 반드시 설치되어 있어야 하나요?

0

80

2

.

0

104

2

혹시 해당 강의 보면서 테스트용으로 사용할 맥북을 구매할 예정인데 어느정도 스펙 이상으로 사야 할지 의견 받아볼수있을까요?

0

72

2

.

0

113

1

.

0

119

2

기기에서는 네트워크 에러가 납니다.

0

101

2

빌드 문의드립니다.

0

73

1

.

0

126

2

.

0

83

2

Expo-blur unimplement 오류

0

106

3