有没有办法通过 FCM for android 发送通知而无需通过博览会的服务器?



我在 Expo 中使用 React Native。我使用create-react-native-app命令创建了项目。 我想使用适用于安卓设备的Firebase云消息传递发送远程通知,而无需通过expo的服务器。

eject是唯一的方法? 只适用于安卓。

参考: https://docs.expo.io/versions/v27.0.0/guides/push-notifications https://docs.expo.io/versions/v27.0.0/guides/using-fcm

是的,你应该弹出它,然后使用一些库,如 https://github.com/evollu/react-native-fcm(这是我使用的那个),它有很好的文档。

如果您不想直接使用该库,则可以使用OneSignal或类似的东西。

问候

使用 FCM 的世博会指南在这里:https://docs.expo.io/versions/v29.0.0/guides/using-fcm

它说FCM"对于所有使用Expo制作的新的独立Android应用程序都是必需的"。

老实说,我在几个小时前配置了世博会通知,我注意到你可以使用世博会推送工具双向向Android发送推送,但也使用Firebase:你唯一要做的就是将ExpoToken存储在Firebase中。 您不会被迫退出世博会。

在请求发送通知权限的流程中,您从 Expo 获得一个令牌,格式类似于ExponentPushToken[i4uCznGitg$84t****a343]。

您可以将以下代码另存为外部组件:

import Constants from 'expo-constants';
import * as Notifications from 'expo-notifications';
import { Platform } from 'react-native';
async function registerForPushNotificationsAsync() {
let token;
if (Constants.isDevice) {
const { status: existingStatus } = await Notifications.getPermissionsAsync();
let finalStatus = existingStatus;

if (existingStatus !== 'granted' || Platform.OS === 'android') {

const { status } = await Notifications.requestPermissionsAsync();
finalStatus = status;
}
if (finalStatus !== 'granted') {
//alert('Failed to get push token for push notification!');       
return;
}
token = (await Notifications.getExpoPushTokenAsync()).data;

} else {
// alert('Must use physical device for Push Notifications');    
}
if (Platform.OS === 'android') {
Notifications.setNotificationChannelAsync('default', {
name: 'default',
importance: Notifications.AndroidImportance.MAX,
vibrationPattern: [0, 250, 250, 250],
lightColor: '#FF231F7C',
});
}
return token;
}
export default registerForPushNotificationsAsync;

获得的令牌可以存储在您的数据库中(如果您想通过世博会推送进一步使用它),但您可以将其发送到 Firebase 进行存储。 在您的Firebase项目中,您可以划分Android和iOS,并将它们分别保存在不同的主题中。

做一个测试:获取一个ExpoPushToken,将其存储在Firebase中,然后向其发送测试推送,您将看到它运行良好。

如 Expo 文档(使用 FCM 推送通知)中所述,如果要使用 Expo 向 Android 发送通知,则必须将其设置为发送服务器令牌

相关内容

  • 没有找到相关文章

最新更新