Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,10 @@ dlcov.log
*.ipr
*.iws
.idea/

# Swift Package Manager
**/.build/
**/.swiftpm/
**/Package.resolved
**/.lock
**/workspace-state.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,19 @@
import io.flutter.plugin.common.MethodChannel.Result;

public class OneSignalDebug extends FlutterMessengerResponder implements MethodCallHandler {
private static OneSignalDebug sharedInstance;

public static OneSignalDebug getSharedInstance() {
if (sharedInstance == null) {
sharedInstance = new OneSignalDebug();
}
return sharedInstance;
}

private OneSignalDebug() {}

static void registerWith(BinaryMessenger messenger) {
OneSignalDebug controller = new OneSignalDebug();
OneSignalDebug controller = getSharedInstance();
controller.messenger = messenger;
controller.channel = new MethodChannel(messenger, "OneSignal#debug");
controller.channel.setMethodCallHandler(controller);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,23 @@

public class OneSignalInAppMessages extends FlutterMessengerResponder
implements MethodCallHandler, IInAppMessageClickListener, IInAppMessageLifecycleListener {
private static OneSignalInAppMessages sharedInstance;

public static OneSignalInAppMessages getSharedInstance() {
if (sharedInstance == null) {
sharedInstance = new OneSignalInAppMessages();
}
return sharedInstance;
}

private OneSignalInAppMessages() {}

static void registerWith(BinaryMessenger messenger) {
OneSignalInAppMessages sharedInstance = new OneSignalInAppMessages();
OneSignalInAppMessages controller = getSharedInstance();

sharedInstance.messenger = messenger;
sharedInstance.channel = new MethodChannel(messenger, "OneSignal#inappmessages");
sharedInstance.channel.setMethodCallHandler(sharedInstance);
controller.messenger = messenger;
controller.channel = new MethodChannel(messenger, "OneSignal#inappmessages");
controller.channel.setMethodCallHandler(controller);
}

@Override
Expand Down Expand Up @@ -89,7 +99,9 @@ private void paused(MethodCall call, Result result) {
}

public void lifecycleInit(Result result) {
OneSignal.getInAppMessages().removeLifecycleListener(this);
OneSignal.getInAppMessages().addLifecycleListener(this);
OneSignal.getInAppMessages().removeClickListener(this);
OneSignal.getInAppMessages().addClickListener(this);
replySuccess(result, null);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,19 @@
import io.flutter.plugin.common.MethodChannel.Result;

public class OneSignalLocation extends FlutterMessengerResponder implements MethodCallHandler {
private static OneSignalLocation sharedInstance;

public static OneSignalLocation getSharedInstance() {
if (sharedInstance == null) {
sharedInstance = new OneSignalLocation();
}
return sharedInstance;
}

private OneSignalLocation() {}

static void registerWith(BinaryMessenger messenger) {
OneSignalLocation controller = new OneSignalLocation();
OneSignalLocation controller = getSharedInstance();
controller.messenger = messenger;
controller.channel = new MethodChannel(messenger, "OneSignal#location");
controller.channel.setMethodCallHandler(controller);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,20 @@

public class OneSignalNotifications extends FlutterMessengerResponder
implements MethodCallHandler, INotificationClickListener, INotificationLifecycleListener, IPermissionObserver {
private static OneSignalNotifications sharedInstance;

private final HashMap<String, INotificationWillDisplayEvent> notificationOnWillDisplayEventCache = new HashMap<>();
private final HashMap<String, INotificationWillDisplayEvent> preventedDefaultCache = new HashMap<>();

public static OneSignalNotifications getSharedInstance() {
if (sharedInstance == null) {
sharedInstance = new OneSignalNotifications();
}
return sharedInstance;
}

private OneSignalNotifications() {}

/**
* A helper class to encapsulate invoking the suspending function [requestPermission] in Java.
* To support API level < 24, the SDK cannot use the OneSignal-defined [Continue.with] helper method.
Expand Down Expand Up @@ -61,7 +72,7 @@ public void resumeWith(@NonNull Object o) {
}

static void registerWith(BinaryMessenger messenger) {
OneSignalNotifications controller = new OneSignalNotifications();
OneSignalNotifications controller = getSharedInstance();
controller.messenger = messenger;
controller.channel = new MethodChannel(messenger, "OneSignal#notifications");
controller.channel.setMethodCallHandler(controller);
Expand Down Expand Up @@ -216,12 +227,17 @@ public void onNotificationPermissionChange(boolean permission) {
}

private void lifecycleInit(Result result) {
OneSignal.getNotifications().removeForegroundLifecycleListener(this);
OneSignal.getNotifications().addForegroundLifecycleListener(this);
OneSignal.getNotifications().removePermissionObserver(this);
OneSignal.getNotifications().addPermissionObserver(this);
notificationOnWillDisplayEventCache.clear();
preventedDefaultCache.clear();
replySuccess(result, null);
}

private void registerClickListener() {
OneSignal.getNotifications().removeClickListener(this);
OneSignal.getNotifications().addClickListener(this);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,19 @@

public class OneSignalPushSubscription extends FlutterMessengerResponder
implements MethodCallHandler, IPushSubscriptionObserver {
private static OneSignalPushSubscription sharedInstance;

public static OneSignalPushSubscription getSharedInstance() {
if (sharedInstance == null) {
sharedInstance = new OneSignalPushSubscription();
}
return sharedInstance;
}

private OneSignalPushSubscription() {}

static void registerWith(BinaryMessenger messenger) {
OneSignalPushSubscription controller = new OneSignalPushSubscription();
OneSignalPushSubscription controller = getSharedInstance();
controller.messenger = messenger;
controller.channel = new MethodChannel(messenger, "OneSignal#pushsubscription");
controller.channel.setMethodCallHandler(controller);
Expand Down Expand Up @@ -46,6 +56,7 @@ private void optOut(MethodCall call, Result reply) {
}

private void lifecycleInit(Result result) {
OneSignal.getUser().getPushSubscription().removeObserver(this);
OneSignal.getUser().getPushSubscription().addObserver(this);
replySuccess(result, null);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,19 @@
import io.flutter.plugin.common.MethodChannel.Result;

public class OneSignalSession extends FlutterMessengerResponder implements MethodCallHandler {
private static OneSignalSession sharedInstance;

public static OneSignalSession getSharedInstance() {
if (sharedInstance == null) {
sharedInstance = new OneSignalSession();
}
return sharedInstance;
}

private OneSignalSession() {}

static void registerWith(BinaryMessenger messenger) {
OneSignalSession controller = new OneSignalSession();
OneSignalSession controller = getSharedInstance();
controller.messenger = messenger;
controller.channel = new MethodChannel(messenger, "OneSignal#session");
controller.channel.setMethodCallHandler(controller);
Expand Down
13 changes: 12 additions & 1 deletion android/src/main/java/com/onesignal/flutter/OneSignalUser.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,19 @@
import org.json.JSONException;

public class OneSignalUser extends FlutterMessengerResponder implements MethodCallHandler, IUserStateObserver {
private static OneSignalUser sharedInstance;

public static OneSignalUser getSharedInstance() {
if (sharedInstance == null) {
sharedInstance = new OneSignalUser();
}
return sharedInstance;
}

private OneSignalUser() {}

static void registerWith(BinaryMessenger messenger) {
OneSignalUser controller = new OneSignalUser();
OneSignalUser controller = getSharedInstance();
controller.messenger = messenger;
controller.channel = new MethodChannel(messenger, "OneSignal#user");
controller.channel.setMethodCallHandler(controller);
Expand Down Expand Up @@ -50,6 +60,7 @@ private void setLanguage(MethodCall call, Result result) {
}

private void lifecycleInit(Result result) {
OneSignal.getUser().removeObserver(this);
OneSignal.getUser().addObserver(this);
replySuccess(result, null);
}
Expand Down
18 changes: 0 additions & 18 deletions example/ios/Flutter/Flutter.podspec

This file was deleted.

2 changes: 1 addition & 1 deletion example/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ EXTERNAL SOURCES:

SPEC CHECKSUMS:
Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467
onesignal_flutter: ff13b98ed601f835bb6f59509456773998a3faec
onesignal_flutter: 6e6254c04f61c8d71d2b9a511bd19f8977eb44e4
OneSignalXCFramework: ea9e14a95b92ad48d9b35037cbae88a9542bdea3

PODFILE CHECKSUM: 008ee3527530ade7ae7311fc02a615df31949c2e
Expand Down
9 changes: 3 additions & 6 deletions example/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -66,16 +66,13 @@ class _MyAppState extends State<MyApp> {
});

OneSignal.Notifications.addClickListener((event) {
print('NOTIFICATION CLICK LISTENER CALLED WITH EVENT: $event');
this.setState(() {
_debugLabelString =
"Clicked notification: \n${event.notification.jsonRepresentation().replaceAll("\\n", "\n")}";
});
print(
'NOTIFICATION CLICK LISTENER CALLED WITH EVENT: ${event.notification.title}');
});

OneSignal.Notifications.addForegroundWillDisplayListener((event) {
print(
'NOTIFICATION WILL DISPLAY LISTENER CALLED WITH: ${event.notification.jsonRepresentation()}');
'NOTIFICATION WILL DISPLAY LISTENER CALLED WITH: ${event.notification.title}');

/// Display Notification, preventDefault to not display
event.preventDefault();
Expand Down
5 changes: 5 additions & 0 deletions ios/Classes/OSFlutterInAppMessages.m
Original file line number Diff line number Diff line change
Expand Up @@ -107,10 +107,15 @@ - (void)paused:(FlutterMethodCall *)call withResult:(FlutterResult)result {

- (void)lifecycleInit:(FlutterMethodCall *)call
withResult:(FlutterResult)result {
[OneSignal.InAppMessages
removeClickListener:OSFlutterInAppMessages.sharedInstance];
[OneSignal.InAppMessages
addClickListener:OSFlutterInAppMessages.sharedInstance];
[OneSignal.InAppMessages
removeLifecycleListener:OSFlutterInAppMessages.sharedInstance];
[OneSignal.InAppMessages
addLifecycleListener:OSFlutterInAppMessages.sharedInstance];
result(nil);
}

#pragma mark In App Message Click
Expand Down
3 changes: 3 additions & 0 deletions ios/Classes/OSFlutterNotifications.m
Original file line number Diff line number Diff line change
Expand Up @@ -116,13 +116,16 @@ - (void)registerForProvisionalAuthorization:(FlutterMethodCall *)call

- (void)lifecycleInit:(FlutterMethodCall *)call
withResult:(FlutterResult)result {
[OneSignal.Notifications removeForegroundLifecycleListener:self];
[OneSignal.Notifications addForegroundLifecycleListener:self];
[OneSignal.Notifications removePermissionObserver:self];
[OneSignal.Notifications addPermissionObserver:self];
result(nil);
}

- (void)registerClickListener:(FlutterMethodCall *)call
withResult:(FlutterResult)result {
[OneSignal.Notifications removeClickListener:self];
[OneSignal.Notifications addClickListener:self];
result(nil);
}
Expand Down
18 changes: 14 additions & 4 deletions ios/Classes/OSFlutterPushSubscription.m
Original file line number Diff line number Diff line change
Expand Up @@ -32,14 +32,23 @@

@implementation OSFlutterPushSubscription

+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar> *)registrar {
OSFlutterPushSubscription *instance = [OSFlutterPushSubscription new];
+ (instancetype)sharedInstance {
static OSFlutterPushSubscription *sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [OSFlutterPushSubscription new];
});
return sharedInstance;
}

instance.channel =
+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar> *)registrar {
OSFlutterPushSubscription.sharedInstance.channel =
[FlutterMethodChannel methodChannelWithName:@"OneSignal#pushsubscription"
binaryMessenger:[registrar messenger]];

[registrar addMethodCallDelegate:instance channel:instance.channel];
[registrar
addMethodCallDelegate:OSFlutterPushSubscription.sharedInstance
channel:OSFlutterPushSubscription.sharedInstance.channel];
}

- (void)handleMethodCall:(FlutterMethodCall *)call
Expand Down Expand Up @@ -72,6 +81,7 @@ - (void)optOut:(FlutterMethodCall *)call withResult:(FlutterResult)result {

- (void)lifecycleInit:(FlutterMethodCall *)call
withResult:(FlutterResult)result {
[OneSignal.User.pushSubscription removeObserver:self];
[OneSignal.User.pushSubscription addObserver:self];
result(nil);
}
Expand Down
2 changes: 2 additions & 0 deletions ios/Classes/OSFlutterUser.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,6 @@

@property(strong, nonatomic) FlutterMethodChannel *channel;

+ (instancetype)sharedInstance;

@end
17 changes: 13 additions & 4 deletions ios/Classes/OSFlutterUser.m
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,22 @@
#import <OneSignalUser/OneSignalUser.h>

@implementation OSFlutterUser
+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar> *)registrar {
OSFlutterUser *instance = [OSFlutterUser new];
+ (instancetype)sharedInstance {
static OSFlutterUser *sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [OSFlutterUser new];
});
return sharedInstance;
}

instance.channel =
+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar> *)registrar {
OSFlutterUser.sharedInstance.channel =
[FlutterMethodChannel methodChannelWithName:@"OneSignal#user"
binaryMessenger:[registrar messenger]];

[registrar addMethodCallDelegate:instance channel:instance.channel];
[registrar addMethodCallDelegate:OSFlutterUser.sharedInstance
channel:OSFlutterUser.sharedInstance.channel];
[OSFlutterPushSubscription registerWithRegistrar:registrar];
}

Expand Down Expand Up @@ -139,6 +147,7 @@ - (void)removeSms:(FlutterMethodCall *)call withResult:(FlutterResult)result {

- (void)lifecycleInit:(FlutterMethodCall *)call
withResult:(FlutterResult)result {
[OneSignal.User removeObserver:self];
[OneSignal.User addObserver:self];
result(nil);
}
Expand Down