upd: push notifikasi
Deskripsi: - blm selesai NO Issues
This commit is contained in:
43
lib/registerForPushNotificationsAsync.ts
Normal file
43
lib/registerForPushNotificationsAsync.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
import Constants from 'expo-constants';
|
||||
import * as Device from 'expo-device';
|
||||
import * as Notifications from 'expo-notifications';
|
||||
import { Platform } from "react-native";
|
||||
|
||||
export async function registerForPushNotificationsAsync() {
|
||||
if (Platform.OS === 'android') {
|
||||
await Notifications.setNotificationChannelAsync('default', {
|
||||
name: 'default',
|
||||
importance: Notifications.AndroidImportance.MAX,
|
||||
vibrationPattern: [0, 250, 250, 250, 250, 250, 250, 250, 500],
|
||||
lightColor: '#FF231F7C',
|
||||
});
|
||||
}
|
||||
|
||||
if (Device.isDevice) {
|
||||
const { status: existingStatus } = await Notifications.getPermissionsAsync()
|
||||
let finalStatus = existingStatus
|
||||
if (existingStatus !== 'granted') {
|
||||
const { status } = await Notifications.requestPermissionsAsync()
|
||||
finalStatus = status
|
||||
}
|
||||
|
||||
if (finalStatus !== 'granted') {
|
||||
throw new Error('Permission not granted')
|
||||
}
|
||||
|
||||
const projectId = Constants?.expoConfig?.extra?.eas?.projectId ?? Constants?.expoConfig?.extra?.projectId
|
||||
if (!projectId) {
|
||||
throw new Error('Project ID not found')
|
||||
}
|
||||
|
||||
try {
|
||||
const pushTokenString = (await Notifications.getExpoPushTokenAsync({ projectId })).data
|
||||
console.log(pushTokenString)
|
||||
return pushTokenString
|
||||
} catch (error) {
|
||||
throw new Error(`Error getting push token: ${error}`)
|
||||
}
|
||||
}else{
|
||||
throw new Error('Must use physical device for Push Notifications')
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user