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 খুব ভালোভাবে জানা প্রয়োজন।