diff --git a/README.md b/README.md index fe64109..cf3ec49 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ npm i react-native-screen-capture ## Usage ```js -import { disallowScreenshot, keepAwake, userDidTakeScreenshot, } from 'react-native-screen-capture'; +import { disallowScreenshot, keepAwake } from 'react-native-screen-capture'; // disable screenshots disallowScreenshot(true); @@ -28,15 +28,6 @@ keepAwake(true); // Keep awake false keepAwake(false); - -// userDidTakeScreenshot -// function to execute when user did a screenshot (ios only) -const onScreenshot = () => { - console.log("Hey, screenshot detected!"); -}; -// its important have an "unsubscribe" to remove listener from screen is dismounted -const eventListener = userDidTakeScreenshot(onScreenshot); -eventListener.remove(); ``` ## Roadmap @@ -50,7 +41,7 @@ eventListener.remove(); | 🚧 | Android | Record capture disable | | 🚧 | iOS | Record capture disable | | 🚧 | Android | Screenshot callback | -| ✅ | iOS | Screenshot callback | +| 🚧 | iOS | Screenshot callback | | 🚧 | Android | Record capture callback | | 🚧 | iOS | Record capture callback | diff --git a/android/src/main/java/com/recepkocur/screencapture/ScreenCaptureModule.java b/android/src/main/java/com/recepkocur/screencapture/ScreenCaptureModule.java index bb2fe01..6289888 100644 --- a/android/src/main/java/com/recepkocur/screencapture/ScreenCaptureModule.java +++ b/android/src/main/java/com/recepkocur/screencapture/ScreenCaptureModule.java @@ -71,10 +71,4 @@ public class ScreenCaptureModule extends ReactContextBaseJavaModule { } } } - - // @ReactMethod - // public void addListener(String eventName) { } - - // @ReactMethod - // public void removeListeners(Integer count) { } } \ No newline at end of file diff --git a/index.js b/index.js index 720049d..44c0d5c 100644 --- a/index.js +++ b/index.js @@ -4,18 +4,5 @@ import { NativeModules, NativeEventEmitter, } from 'react-native'; export const { ScreenCapture } = NativeModules; -const eventEmitter = new NativeEventEmitter(ScreenCapture); - -export const userDidTakeScreenshot = fn => { - if (typeof(fn) !== 'function'){ - console.error('ScreenCapture, addListener requires valid callback function'); - return; - } - return eventEmitter?.addListener?.( - 'ScreenCapture_userDidTakeScreenshot', - fn - ); -} - export const disallowScreenshot = ScreenCapture.disallowScreenshot export const keepAwake = ScreenCapture.keepAwake \ No newline at end of file diff --git a/ios/ScreenCapture.h b/ios/ScreenCapture.h index 9ea5749..5ca988f 100644 --- a/ios/ScreenCapture.h +++ b/ios/ScreenCapture.h @@ -1,9 +1,7 @@ // ScreenCapture.h #import -#import -#import -@interface ScreenCapture : RCTEventEmitter +@interface ScreenCapture : NSObject @end diff --git a/ios/ScreenCapture.m b/ios/ScreenCapture.m index 7c566b6..b450a96 100644 --- a/ios/ScreenCapture.m +++ b/ios/ScreenCapture.m @@ -1,17 +1,14 @@ // ScreenCapture.m -// #import -// RCTLogInfo(@"Example Log"); - #import "ScreenCapture.h" @implementation ScreenCapture { - BOOL hasListeners; BOOL dev; UITextField *secureTextField; } - (dispatch_queue_t)methodQueue { + dev = NO; if (dev) NSLog(@"[SC] methodQueue"); return dispatch_get_main_queue(); } @@ -20,35 +17,6 @@ return YES; } -- (NSArray *)supportedEvents { - return @[@"ScreenCapture_userDidTakeScreenshot"]; -} - -- (id)init { - dev = TRUE; - if (dev) NSLog(@"[SC] init"); - if ((self = [super init])) { - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(userDidTakeScreenshot:) name:UIApplicationUserDidTakeScreenshotNotification object: nil]; - } - return self; -} - -- (void)startObserving { - if (dev) NSLog(@"[SC] startObserving"); - hasListeners = YES; -} - -- (void)stopObserving { - if (dev) NSLog(@"[SC] stopObserving"); - hasListeners = NO; -} - -- (void)userDidTakeScreenshot:(NSNotification *)notification { - if (!hasListeners) return; - if (dev) NSLog(@"[SC] userDidTakeScreenshot"); - [self sendEventWithName:@"ScreenCapture_userDidTakeScreenshot" body:nil]; -} - #pragma mark - dealloc - - (void)dealloc { @@ -71,21 +39,15 @@ RCT_EXPORT_METHOD(keepAwake:(BOOL)status) RCT_EXPORT_METHOD(disallowScreenshot:(BOOL)status) { if (dev) NSLog(@"[SC] disallowScreenshot with %@", status ? @"YES" : @"NO"); - @try { - if (dev) NSLog(@"[SC] try"); - if (self->secureTextField == nil) { - self->secureTextField = [[UITextField alloc] init]; - self->secureTextField.userInteractionEnabled = false; - UIWindow *window = [[[UIApplication sharedApplication] delegate] window]; - [window addSubview:self->secureTextField]; - [window.layer.superlayer addSublayer:self->secureTextField.layer]; - [self->secureTextField.layer.sublayers.firstObject addSublayer:window.layer]; - } - [self->secureTextField setSecureTextEntry:status]; - } - @catch (NSException *e) { - if (dev) NSLog(@"[SC] catch"); + if (self->secureTextField == nil) { + self->secureTextField = [[UITextField alloc] init]; + self->secureTextField.userInteractionEnabled = false; + UIWindow *window = [[[UIApplication sharedApplication] delegate] window]; + [window addSubview:self->secureTextField]; + [window.layer.superlayer addSublayer:self->secureTextField.layer]; + [self->secureTextField.layer.sublayers.firstObject addSublayer:window.layer]; } + [self->secureTextField setSecureTextEntry:status]; } @end