import * as Notifications from "expo-notifications"; import * as Device from "expo-device"; import Constants from "expo-constants"; export async function registerForPushNotifications(): Promise { if (!Device.isDevice) return null; // Request permission const { status: existingStatus } = await Notifications.getPermissionsAsync(); let finalStatus = existingStatus; if (existingStatus !== "granted") { const { status } = await Notifications.requestPermissionsAsync(); finalStatus = status; } if (finalStatus !== "granted") { console.warn("Push notification permission denied"); return null; } // TODO: Experiment with different vibration patterns await Notifications.setNotificationChannelAsync("default", { name: "default", importance: Notifications.AndroidImportance.MAX, vibrationPattern: [0, 250, 250, 250], }); // Get the Expo push token const projectId = Constants.expoConfig?.extra?.eas?.projectId; const token = ( await Notifications.getExpoPushTokenAsync({ projectId, }) ).data; return token; }