React-Native: не удается получить push-уведомление о выставке в автономном приложении

Это ss из автономного приложения, его токен expo gettings, но по какой-то причине он не показывает уведомления

Я не могу получать push-уведомление в своих автономных приложениях, и если кто-то другой использовал приложение с выставки (а не с моего телефона), то он тоже не получит его, по какой-то причине только я получаю его .. это тоже на клиенте expo, и если я устанавливаю apk на свой телефон, затем я получаю сообщение об ошибке .... Во всех этих ситуациях ошибка одинакова,

{
"data": {
    "status": "error",
    "message": "SNS failed to send the notification (reason: EndpointDisabled, status code: 400).",
    "details": {
        "error": "DeviceNotRegistered",
        "sns": {
            "statusCode": 400,
            "reason": "EndpointDisabled",
            "__message": "Endpoint is disabled"
        }
    }
}

}

мое уведомление js

 import { Permissions, Notifications } from 'expo';
import { AsyncStorage } from 'react-native';
import axios from 'axios';
import {
  IUSTCONNECT_URL
} from '../actions/types';
const server = IUSTCONNECT_URL;
export default async function registerForPushNotificationsAsync() {
  const { status: existingStatus } = await Permissions.getAsync(
    Permissions.NOTIFICATIONS
  );
  let finalStatus = existingStatus;

  // only ask if permissions have not already been determined, because
  // iOS won't necessarily prompt the user a second time.
  if (existingStatus !== 'granted') {
    // Android remote notification permissions are granted during the app
    // install, so this will only ask on iOS
    const { status } = await Permissions.askAsync(Permissions.NOTIFICATIONS);
    finalStatus = status;
  }

  // Stop here if the user did not grant permissions
  if (finalStatus !== 'granted') {
    return;
  }

  // Get the token that uniquely identifies this device
  let token = await Notifications.getExpoPushTokenAsync();
  console.log(token);


  await AsyncStorage.setItem('notificationToken', token);
  const adminFlag = await AsyncStorage.getItem('admin');

  try {
      const { data } = await axios.post(`${server}/admin/app_bridge/user.php`, {
      job: 'updateExpoToken',
      admin: adminFlag,
      token: token
    });
    if(data.trim() === 'success') {
            console.log('expo push notification token sent:');
    } else {
          console.log('error sending notification token:');
          console.log(data);
    }
  } catch (e) {
      console.log(e);
  }
}

и я звоню registerForPushNotificationsAsync() на своей дочерней вкладке, все работает хорошо для моего приложения expo ... остальное не ... Любая помощь?


person Sarmad Shah    schedule 18.03.2018    source источник


Ответы (2)


Проблема в устройстве. вы можете увидеть в ошибке DeviceNotRegistered.

см. документацию expo здесь.

DeviceNotRegistered: устройство больше не может получать push-уведомления, и вам следует прекратить отправку сообщений на данный push-токен Expo.

Проблема в том, что в документации нет информации, почему возникает эта ошибка. Попробуйте с каким-нибудь другим устройством.

person Anjal Saneen    schedule 18.03.2018

если вы разрабатываете с помощью firebase, вам нужно обновить свой токен, выполните следующие действия:

1 на вашей странице проекта firebase выберите настройку опции. 2 перейдите к параметрам настроек проекта. 3 выберите вариант облачных сообщений. 4 на учетных данных проекта скопируйте токен. 5. в вашем терминале в корневом каталоге типа проекта:

expo push:android:upload --api-key <your token>

для получения дополнительной информации посетите введите здесь описание ссылки

попробуйте отправить push-уведомление вручную введите здесь описание ссылки

я работаю с SDK 37.0.0

person Aaron    schedule 17.07.2020