Permissions (Camera, Location, Storage)

Permissions in React Native (Camera, Location, Storage)

React Native অ্যাপে Camera, Location বা Storage access করার জন্য user-এর permission নেওয়া বাধ্যতামূলক। Android এবং iOS—দুই প্ল্যাটফর্মেই permission handling আলাদা। এই chapter-এ আমরা Camera, Location, Storage permission কিভাবে কাজ করে, কিভাবে সেটআপ করতে হয়—সব কিছু শিখবো।

🔶 কেন Permissions দরকার?

Mobile apps sensitive hardware বা personal data ব্যবহার করে যেমন—

  • 📸 Camera — ছবি/ভিডিও তোলার জন্য
  • 📍 Location — user-এর অবস্থান জানার জন্য
  • 📂 Storage — ফাইল read/write করার জন্য

যেহেতু এগুলো user privacy-এর সাথে সম্পৃক্ত, তাই অ্যাপকে OS-level permission নিতে হয়।


🔶 Permissions কিভাবে নেওয়া হয়?

React Native এ সাধারণত react-native-permissions লাইব্রেরি ব্যবহৃত হয়।

npm install react-native-permissions

iOS & Android এ আলাদা configuration প্রয়োজন (নীচে দেখানো হলো)।


🔶 Camera Permission

📌 1. iOS Permission Setup

NSCameraUsageDescription
This app requires access to your camera.

📌 2. Android Permission Setup

<uses-permission android:name="android.permission.CAMERA" />

📌 3. Request Camera Permission (JS Code)


import { check, request, PERMISSIONS, RESULTS } from "react-native-permissions";

const requestCamera = async () => {
  const result = await request(
    Platform.OS === "android"
      ? PERMISSIONS.ANDROID.CAMERA
      : PERMISSIONS.IOS.CAMERA
  );

  if (result === RESULTS.GRANTED) {
    console.log("Camera permission granted");
  } else {
    console.log("Camera permission denied");
  }
};

    

এটি Camera ব্যবহার করার আগে অবশ্যই কল করতে হবে।


🔶 Location Permission

Location permission দুই ধরনের—

  • 👉 Fine Location (GPS accuracy)
  • 👉 Coarse Location (WiFi/Cell tower accuracy)

📌 iOS Setup

NSLocationWhenInUseUsageDescription
App needs your location to show services near you.

📌 Android Setup

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

📌 Request Location Permission


const requestLocation = async () => {
  const result = await request(
    Platform.OS === "android"
      ? PERMISSIONS.ANDROID.ACCESS_FINE_LOCATION
      : PERMISSIONS.IOS.LOCATION_WHEN_IN_USE
  );

  console.log(result);
};

    

Permission granted হলে আপনি expo-location বা react-native-geolocation-service দিয়ে location collect করতে পারবেন।


🔶 Storage Permission

Storage permission file read/write বা gallery access করার জন্য প্রয়োজন।

📌 Android Setup

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

📌 Request Storage Permission


const requestStorage = async () => {
  const result = await request(
    PERMISSIONS.ANDROID.READ_EXTERNAL_STORAGE
  );

  console.log(result);
};

    

iOS এ storage permission সাধারণত লাগেনা কারণ sandboxing already secure।


🔶 Permissions – Best Practices

  • ✔ অ্যাপ ওপেন হওয়ার সাথে সাথে permission চাইবেন না
  • ✔ User action হলে permission চাইবেন (e.g., “Take Photo” → ask camera)
  • ✔ যদি user permission deny করে, তাকে settings এ redirect করার option দিন
  • ✔ Sensitive data access always justified message দিন
  • ✔ Android 13+ এ new permission rules follow করুন

📌 Summary

React Native অ্যাপে Camera, Location, Storage ব্যবহার করতে হলে user permission নেওয়া অত্যন্ত জরুরি। iOS এবং Android উভয়ের জন্য আলাদা setup করতে হয়। react-native-permissions ব্যবহার করলে পুরো permission management সহজ হয়ে যায়। Production-level অ্যাপ বানাতে হলে permission handling খুব ভালোভাবে জানা প্রয়োজন।

👼 Quiz
/

লোড হচ্ছে...