Uİ UX KISMI VE TEST KISMI YOK BURADA HABERİNİZ OLSUN
import * as Contacts from 'expo-contacts';
import { Linking } from 'react-native';- Rehber İzni ve Kişileri Alma
const { status } = await Contacts.requestPermissionsAsync();- Bu kod, kullanıcıdan telefon rehberine erişim izni ister
- Kullanıcı izni kabul ederse 'granted' durumu döner
- İzin reddedilirse, rehbere erişilemez
const { data } = await Contacts.getContactsAsync({
fields: [Contacts.Fields.PhoneNumbers, Contacts.Fields.Name],
});- İzin alındıktan sonra rehberdeki kişileri getirir
- Sadece telefon numarası ve isim bilgilerini alır
- Veriler 'data' değişkeninde saklanır
- Arama ve Mesaj Fonksiyonları
const handleCall = (phoneNumber) => {
Linking.openURL(`tel:${phoneNumber}`);
};
const handleMessage = (phoneNumber) => {
Linking.openURL(`sms:${phoneNumber}`);
};handleCall: Telefon numarasına tıklandığında arama uygulamasını açarhandleMessage: Mesaj butonuna tıklandığında SMS uygulamasını açar
import * as Location from 'expo-location';
import MapView, { Marker } from 'react-native-maps';- Konum İzni ve Alma
let { status } = await Location.requestForegroundPermissionsAsync();- Kullanıcıdan konum izni ister
- Ön plan konum izni için gereklidir
let loc = await Location.getCurrentPositionAsync({});- Cihazın mevcut konumunu alır
- Enlem ve boylam bilgilerini içerir
- Harita Görüntüleme
<MapView
initialRegion={{
latitude: location.latitude,
longitude: location.longitude,
latitudeDelta: 0.01,
longitudeDelta: 0.01,
}}
>- Kullanıcının konumunu merkez alarak haritayı gösterir
latitudeDeltavelongitudeDeltazoom seviyesini belirler
import * as Notifications from 'expo-notifications';- Bildirim Konfigürasyonu
configureNotifications();
requestPermissions();- Bildirim ayarlarını yapılandırır
- Kullanıcıdan bildirim izni ister
- Bildirim Gönderme
sendImmediateNotification(
'Anlık Bildirim',
'Bu bir anlık bildirim örneğidir!'
);- Anlık bildirim gönderir
- Başlık ve mesaj içeriği alır
import { Accelerometer, Gyroscope } from 'expo-sensors';- Sensör Verilerini Alma
Accelerometer.setUpdateInterval(1000);
const accelerometerSubscription = Accelerometer.addListener(data => {
setAccelerometerData(data);
});- İvmeölçer verilerini her saniye günceller
- X, Y, Z eksenlerindeki hareket verilerini alır
Gyroscope.setUpdateInterval(1000);
const gyroscopeSubscription = Gyroscope.addListener(data => {
setGyroscopeData(data);
});- Jiroskop verilerini her saniye günceller
- Cihazın dönüş hareketlerini algılar
import { NavigationContainer } from '@react-navigation/native';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';<Tab.Navigator>
<Tab.Screen name="Harita" component={MapPage} />
<Tab.Screen name="Rehber" component={ContactsPage} />
<Tab.Screen name="Bildirimler" component={NotificationsPage} />
<Tab.Screen name="Sensörler" component={SensorsPage} />
</Tab.Navigator>- Alt navigasyon menüsünü oluşturur
- Dört ana sayfaya erişim sağlar:
- Harita: Konum gösterimi
- Rehber: Kişiler listesi
- Bildirimler: Bildirim yönetimi
- Sensörler: Sensör verileri
import * as Notifications from 'expo-notifications';- Bildirim İzinleri
export async function requestPermissions() {
const { status } = await Notifications.requestPermissionsAsync();
return status;
}- Kullanıcıdan bildirim izni ister
- İzin durumunu döndürür
- Anlık Bildirim Gönderme
export async function sendImmediateNotification(title, body) {
await Notifications.scheduleNotificationAsync({
content: {
title: title,
body: body,
},
trigger: null,
});
}- Hemen gösterilecek bildirim oluşturur
- Başlık ve mesaj içeriği alır
- Bildirim Ayarları
export function configureNotifications() {
Notifications.setNotificationHandler({
handleNotification: async () => ({
shouldShowBanner: true,
shouldShowList: true,
shouldPlaySound: true,
shouldSetBadge: false,
}),
});
}
## Başlangıç
1. Bağımlılıkları yükleyin:
```bash
npm install- Geliştirme sunucusunu başlatın:
npm start- Cihazda veya emülatörde çalıştırın:
npm run android
# veya
npm run ios-
Rehber İzinleri
- İlk kullanımda rehber izni istenecektir
- İzin reddedilirse rehber özellikleri çalışmayacaktır
-
Konum İzinleri
- Harita özelliği için konum izni gereklidir
- Arka planda konum izni istenmemektedir
-
Bildirimler
- Bildirimler için izin gereklidir
- Test için "Bildirim Gönder" butonunu kullanabilirsiniz