diff --git a/android/src/main/java/com/adpdigital/push/rn/AdpPushClientModule.java b/android/src/main/java/com/adpdigital/push/rn/AdpPushClientModule.java index 9498eea..66a4ac9 100644 --- a/android/src/main/java/com/adpdigital/push/rn/AdpPushClientModule.java +++ b/android/src/main/java/com/adpdigital/push/rn/AdpPushClientModule.java @@ -10,6 +10,7 @@ import android.util.Log; import com.adpdigital.push.AdpPushClient; +import com.adpdigital.push.AppState; import com.adpdigital.push.Callback; import com.adpdigital.push.ConnectionStatus; import com.adpdigital.push.EventMessage; @@ -378,6 +379,15 @@ public void getUserId(Promise promise) { } } + public void onEvent(AppState state){ + if (state == AppState.REGISTERED){ + WritableMap params = Arguments.createMap(); + + params.putBoolean("isRegister",true); + sendEvent("onRegister",params); + } + } + @ReactMethod public void setDevelopment(Boolean devMode) { chabok.setDevelopment(devMode); @@ -538,7 +548,7 @@ public void track(String trackName, ReadableMap data) { } @ReactMethod - public void subscribeEvent(String eventName, final Promise promise) { + public void subscribeEvent(final String eventName, final Promise promise) { if (TextUtils.isEmpty(eventName)) { promise.reject(new IllegalArgumentException("eventName parameter is null or empty")); return; @@ -547,17 +557,25 @@ public void subscribeEvent(String eventName, final Promise promise) { @Override public void onSuccess(Object value) { promise.resolve(true); + WritableMap params = Arguments.createMap(); + + params.putString("name",eventName); + sendEvent("onSubscribe", params); } @Override public void onFailure(Throwable throwable) { promise.reject(throwable); + WritableMap params = Arguments.createMap(); + + params.putString("error",throwable.getMessage()); + sendEvent("onSubscribe", params); } }); } @ReactMethod - public void subscribeEvent(String eventName, String installationId, final Promise promise) { + public void subscribeEvent(final String eventName, String installationId, final Promise promise) { if (TextUtils.isEmpty(eventName)) { promise.reject(new IllegalArgumentException("eventName parameter is null or empty")); return; @@ -569,18 +587,26 @@ public void subscribeEvent(String eventName, String installationId, final Promis @Override public void onSuccess(Object value) { promise.resolve(true); + WritableMap params = Arguments.createMap(); + + params.putString("name",eventName); + sendEvent("onSubscribe", params); } @Override public void onFailure(Throwable throwable) { promise.reject(throwable); + WritableMap params = Arguments.createMap(); + + params.putString("error",throwable.getMessage()); + sendEvent("onSubscribe", params); } }); } } @ReactMethod - public void subscribe(String channel, final Promise promise) { + public void subscribe(final String channel, final Promise promise) { if (TextUtils.isEmpty(channel)) { promise.reject(new IllegalArgumentException("channel parameter is null or empty")); return; @@ -589,17 +615,25 @@ public void subscribe(String channel, final Promise promise) { @Override public void onSuccess(Object value) { promise.resolve(true); + WritableMap params = Arguments.createMap(); + + params.putString("name",channel); + sendEvent("onSubscribe", params); } @Override public void onFailure(Throwable throwable) { promise.reject(throwable); + WritableMap params = Arguments.createMap(); + + params.putString("error",throwable.getMessage()); + sendEvent("onSubscribe", params); } }); } @ReactMethod - public void unSubscribe(String channel, final Promise promise) { + public void unSubscribe(final String channel, final Promise promise) { if (TextUtils.isEmpty(channel)) { promise.reject(new IllegalArgumentException("channel parameter is null or empty")); return; @@ -608,17 +642,25 @@ public void unSubscribe(String channel, final Promise promise) { @Override public void onSuccess(Object value) { promise.resolve(true); + WritableMap params = Arguments.createMap(); + + params.putString("name",channel); + sendEvent("onUnsubscribe", params); } @Override public void onFailure(Throwable throwable) { promise.reject(throwable); + WritableMap params = Arguments.createMap(); + + params.putString("error",throwable.getMessage()); + sendEvent("onUnsubscribe", params); } }); } @ReactMethod - public void unSubscribeEvent(String eventName, final Promise promise) { + public void unSubscribeEvent(final String eventName, final Promise promise) { if (TextUtils.isEmpty(eventName)) { promise.reject(new IllegalArgumentException("eventName parameter is null or empty")); return; @@ -628,17 +670,25 @@ public void unSubscribeEvent(String eventName, final Promise promise) { @Override public void onSuccess(Object value) { promise.resolve(true); + WritableMap params = Arguments.createMap(); + + params.putString("name",eventName); + sendEvent("onUnsubscribe", params); } @Override public void onFailure(Throwable throwable) { promise.reject(throwable); + WritableMap params = Arguments.createMap(); + + params.putString("error",throwable.getMessage()); + sendEvent("onUnsubscribe", params); } }); } @ReactMethod - public void unSubscribeEvent(String eventName, String installationId, final Promise promise) { + public void unSubscribeEvent(final String eventName, String installationId, final Promise promise) { if (TextUtils.isEmpty(eventName)) { promise.reject(new IllegalArgumentException("eventName parameter is null or empty")); return; @@ -650,11 +700,19 @@ public void unSubscribeEvent(String eventName, String installationId, final Prom @Override public void onSuccess(Object value) { promise.resolve(true); + WritableMap params = Arguments.createMap(); + + params.putString("name",eventName); + sendEvent("onUnsubscribe", params); } @Override public void onFailure(Throwable throwable) { promise.reject(throwable); + WritableMap params = Arguments.createMap(); + + params.putString("error",throwable.getMessage()); + sendEvent("onUnsubscribe", params); } }); } diff --git a/history.md b/history.md index e93d03c..60ffc65 100644 --- a/history.md +++ b/history.md @@ -1,5 +1,8 @@ ## History +### v1.1.1 (14/11/2018) +- Add `onSubscribe` and `onUnsubscribe` listener for getting subscribe and unsubscribe status. + ### v1.1.0 (12/11/2018) - Update Chabok android SDK version to [v2.14.0](https://github.com/chabokpush/chabok-client-android/releases/tag/v2.14.0) - Update Chabok iOS SDK version to [v1.18.0](https://github.com/chabokpush/chabok-client-ios/releases/tag/v1.18.0) diff --git a/ios/AdpPushClient.m b/ios/AdpPushClient.m index a550aff..76773fb 100644 --- a/ios/AdpPushClient.m +++ b/ios/AdpPushClient.m @@ -30,14 +30,12 @@ @implementation AdpPushClient rejecter:(RCTPromiseRejectBlock)reject) { NSArray *appIds = [appId componentsSeparatedByString:@"/"]; self.appId = appIds.firstObject; - [PushClientManager.defaultManager addDelegate:self]; - [PushClientManager.defaultManager application:UIApplication.sharedApplication - didFinishLaunchingWithOptions:nil]; BOOL state = [PushClientManager.defaultManager registerApplication:self.appId apiKey:apiKey userName:username password:password]; + if (state) { RCTLogInfo(@"Initilized sucessfully"); resolve(@{@"result":@"Initilized sucessfully"}); @@ -50,6 +48,9 @@ @implementation AdpPushClient }]; reject(@"400",@"Could not init chabok parameters",error); } + [PushClientManager.defaultManager addDelegate:self]; + [PushClientManager.defaultManager application:UIApplication.sharedApplication + didFinishLaunchingWithOptions:nil]; } RCT_EXPORT_METHOD(initializeApp:(NSString *) appName options:(NSDictionary *) options cbk:(RCTResponseSenderBlock) cbk) { @@ -58,13 +59,9 @@ @implementation AdpPushClient RCTLogInfo(@"Option parameter is null"); cbk(@[@{@"result":@"Option parameter is null"}]); } else { - BOOL devMode = [[options valueForKey:@"isDev"] boolValue]; - [PushClientManager setDevelopment:devMode]; - PushClientManager.defaultManager.enableLog = YES; - [PushClientManager.defaultManager addDelegate:self]; - + NSString *appId = [options valueForKey:@"appId"]; NSString *apiKey = [options valueForKey:@"apiKey"]; NSString *username = [options valueForKey:@"username"]; @@ -80,6 +77,7 @@ @implementation AdpPushClient } rejecter:^(NSString *code, NSString *message, NSError *error) { cbk(@[@{@"error":message}]); }]; + } } @@ -121,14 +119,23 @@ @implementation AdpPushClient chnl = channels; } BOOL state = [PushClientManager.defaultManager registerUser:userId - channels:chnl]; + channels:chnl registrationHandler:^(BOOL isRegistered, NSString *userId, NSError *error) { + RCTLogInfo(@"isRegistered : %d userId : %@ error : %@",isRegistered, userId, error ); + if (error) { + [self sendEventWithName:@"onRegister" body:@{@"error":error, + @"isRegister":@(NO) + }]; + } else { + [self sendEventWithName:@"onRegister" body:@{@"isRegister":@(isRegistered)}]; + } + }]; if (state) { - RCTLogInfo(@"@@@@@@@@@@@@@@@@@ Registered to chabok with channels"); + RCTLogInfo(@"Registered to chabok with channels"); } else { - RCTLogInfo(@"@@@@@@@@@@@@@@@@@ Fail to registered to chabok"); + RCTLogInfo(@"Fail to registered to chabok"); } } else { - RCTLogInfo(@"@@@@@@@@@@@@@@@@@ Could not register userId to chabok with channels"); + RCTLogInfo(@"Could not register userId to chabok with channels"); } } @@ -298,7 +305,7 @@ @implementation AdpPushClient #pragma mark - chabok delegate methods - (NSArray *)supportedEvents{ - return @[@"connectionStatus",@"onEvent",@"onMessage", @"ChabokMessageReceived"]; + return @[@"connectionStatus",@"onEvent",@"onMessage", @"ChabokMessageReceived", @"onSubscribe", @"onUnsubscribe", @"onRegister"]; } -(void) pushClientManagerDidReceivedMessage:(PushClientMessage *)message{ @@ -344,6 +351,20 @@ -(void) pushClientManagerDidChangedServerConnectionState { [self sendEventWithName:@"connectionStatus" body:connectionState]; } +-(void) pushClientManagerDidSubscribed:(NSString *)channel{ + [self sendEventWithName:@"onSubscribe" body:@{@"name":channel}]; +} +-(void) pushClientManagerDidFailInSubscribe:(NSError *)error{ + [self sendEventWithName:@"onSubscribe" body:@{@"error":error}]; +} + +-(void) pushClientManagerDidUnsubscribed:(NSString *)channel{ + [self sendEventWithName:@"onUnsubscribe" body:@{@"name":channel}]; +} +-(void) pushClientManagerDidFailInUnsubscribe:(NSError *)error{ + [self sendEventWithName:@"onUnsubscribe" body:@{@"error":error}]; +} + - (void)invalidate { self.appId = nil; } diff --git a/package.json b/package.json index c3345ee..b670eb8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-chabok", - "version": "1.1.0", + "version": "1.1.1", "description": "React native wrapper for Chabok SDK", "scripts": { "test": "echo \"Error: no test specified\" && exit 1"