Expo ile Native Modüller Kullanmanın Yolları

Expo ile Native Modüller Kullanmanın Yolları


Expo, React Native ile uygulama geliştirmeyi kolaylaştıran bir araçtır. Ancak, bazen özel işlevsellikler için native modüller kullanmak gerekebilir. Bu makalede, bare workflow kullanarak Expo ile native modüllerin nasıl kullanılacağını öğreneceğiz. Bu, daha özel işlevsellikler ve platforma özgü API'lere erişim sağlamak için oldukça önemlidir.

Bare Workflow Nedir?

Bare workflow, Expo uygulamanızı sıfırdan ayarlamanıza olanak tanır. Bu yöntem, uygulamanız üzerinde daha fazla kontrol sahibi olmanızı sağlar. Native modülleri kullanmak istediğinizde, bare workflow'a geçmeniz genellikle gereklidir. Bu noktada, iOS ve Android projelerinizi manuel olarak yönetmeniz gerekecektir.

Bare Workflow'a Geçiş

Expo uygulamanızın bare workflow'a geçiş yapması için aşağıdaki komutu çalıştırmalısınız:

npx expo prebuild

Bunu yaptıktan sonra, projeyi Xcode veya Android Studio kullanarak açabilir ve native modülleri eklemeye başlayabilirsiniz.

Native Modül Örneği

iOS İçin Native Modül

Bir native modül oluşturmak için önce iOS klasöründe aşağıdaki kodu ekleyebilirsiniz. Bu örnek, cihazın pil seviyesini alacak bir modületir.

#import <React/RCTBridgeModule.h>

@interface BatteryModule : NSObject <RCTBridgeModule>
@end

@implementation BatteryModule

RCT_EXPORT_MODULE();

RCT_EXPORT_METHOD(getBatteryLevel:(RCTResponseSenderBlock)callback) {
    UIDevice *device = [UIDevice currentDevice];
    [device setBatteryMonitoringEnabled:YES];
    float batteryLevel = device.batteryLevel;
    callback(@[@(batteryLevel)]);
}
@end

Android İçin Native Modül

Native modülü Android tarafında oluşturmak için MainActivity.java dosyasına aşağıdaki kodu ekleyin:

public class BatteryModule extends ReactContextBaseJavaModule {

    public BatteryModule(ReactApplicationContext reactContext) {
        super(reactContext);
    }

    @Override
    public String getName() {
        return "BatteryModule";
    }

    @ReactMethod
    public void getBatteryLevel(Promise promise) {
        BatteryManager batteryManager = (BatteryManager) getReactApplicationContext().getSystemService(Context.BATTERY_SERVICE);
        int batteryLevel = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
        promise.resolve(batteryLevel);
    }
}

Yukarıdaki örneklerde görüldüğü gibi, iOS ve Android için özel işlevsellikler eklemek oldukça basittir. Modülünüzü kullanmak için React Native komponentinizden çağrıda bulunabilirsiniz.

Sonuç

Expo ile native modüller kullanmak, uygulamanıza daha fazla işlevsellik katmanın harika bir yoludur. Bare workflow'a geçiş yaparak ve doğru native modülleri oluşturarak, ihtiyaç duyduğunuz özel fonksiyonları Projenize ekleyebilirsiniz. Bu makalede oluşturduğumuz örnekler, bare workflow kullanarak nasıl daha geniş bir işlevsellik elde edebileceğinizi göstermektedir. Uygulama geliştirme sürecinde başarılı olmanızı dileriz!