اذهب إلى المحتوى
  • 0

ارسال إشعار عند اختيار Picker

شيماء راشد

السؤال

Recommended Posts

  • 0

نقوم بتثبيت المكتبات اللازمة:

expo install expo-notifications expo-permissions

بعد ذلك عليك إنشاء ملف لإدارة الإشعارات (مثلاً: NotificationManager.js) وضعي به الكود التالي:

import * as Notifications from 'expo-notifications';
import * as Permissions from 'expo-permissions';

export async function registerForPushNotificationsAsync() {
  const { status: existingStatus } = await Permissions.getAsync(Permissions.NOTIFICATIONS);
  let finalStatus = existingStatus;

  if (existingStatus !== 'granted') {
    const { status } = await Permissions.askAsync(Permissions.NOTIFICATIONS);
    finalStatus = status;
  }

  if (finalStatus !== 'granted') {
    console.log('Permission to receive push notifications denied');
    return;
  }

  const tokenData = await Notifications.getExpoPushTokenAsync();
  const token = tokenData.data;

  return token;
}

export async function sendNotification(title, body) {
  const token = await registerForPushNotificationsAsync();

  await Notifications.scheduleNotificationAsync({
    content: {
      title: title,
      body: body,
      data: { data: 'goes here' },
    },
    trigger: null,
    to: token,
  });
}

الآن تستطيعي استخدام ذلك الملف في مكان آخر في تطبيقك لإرسال الإشعارات، وتحديث مكون Picker ليستدعي وظيفة sendNotification عندما يتم اختيار قيمة جديدة، كالتالي:

import React, { useState } from 'react';
import { Picker, View } from 'react-native';
import { sendNotification } from './NotificationManager';

export default function MyComponent() {
  const [selectedValue, setSelectedValue] = useState("option1");

  const handlePickerChange = (itemValue, itemIndex) => {
    setSelectedValue(itemValue);
    sendNotification('Picker Selected', `You selected: ${itemValue}`);
  };

  return (
    <View>
      <Picker
        selectedValue={selectedValue}
        onValueChange={handlePickerChange}
      >
        <Picker.Item label="Option 1" value="option1" />
        <Picker.Item label="Option 2" value="option2" />
        <Picker.Item label="Option 3" value="option3" />
      </Picker>
    </View>
  );
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...