Skip to content

Commit 380d728

Browse files
authored
Merge pull request #175 from OneSignal/ios_outcome_events
Implementing outcome events for iOS stubbed side of the SDK
2 parents 3c1a3c3 + a431645 commit 380d728

9 files changed

+54
-47
lines changed
File renamed without changes.

ios/Classes/OneSignalCategories.m renamed to ios/Classes/OSFlutterCategories.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
* THE SOFTWARE.
2626
*/
2727

28-
#import "OneSignalCategories.h"
28+
#import "OSFlutterCategories.h"
2929

3030
/*
3131
The OneSignal iOS SDK implements similar methods (`toDictionary`)

ios/Classes/OneSignalInAppMessagesController.h renamed to ios/Classes/OSFlutterInAppMessagesController.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
#import <Foundation/Foundation.h>
2929
#import <Flutter/Flutter.h>
3030

31-
@interface OneSignalInAppMessagesController : NSObject<FlutterPlugin>
31+
@interface OSFlutterInAppMessagesController : NSObject<FlutterPlugin>
3232

3333
@property (strong, nonatomic) FlutterMethodChannel *channel;
3434

ios/Classes/OneSignalInAppMessagesController.m renamed to ios/Classes/OSFlutterInAppMessagesController.m

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@
2525
* THE SOFTWARE.
2626
*/
2727

28-
#import "OneSignalInAppMessagesController.h"
28+
#import "OSFlutterInAppMessagesController.h"
2929
#import <OneSignal/OneSignal.h>
30-
#import "OneSignalCategories.h"
30+
#import "OSFlutterCategories.h"
3131

32-
@implementation OneSignalInAppMessagesController
32+
@implementation OSFlutterInAppMessagesController
3333
+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar>*)registrar {
34-
OneSignalInAppMessagesController *instance = [OneSignalInAppMessagesController new];
34+
OSFlutterInAppMessagesController *instance = [OSFlutterInAppMessagesController new];
3535

3636
instance.channel = [FlutterMethodChannel
3737
methodChannelWithName:@"OneSignal#inAppMessages"

ios/Classes/OneSignalOutcomeEventsController.h renamed to ios/Classes/OSFlutterOutcomeEventsController.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
#import <Foundation/Foundation.h>
2929
#import <Flutter/Flutter.h>
3030

31-
@interface OneSignalOutcomeEventsController : NSObject<FlutterPlugin>
31+
@interface OSFlutterOutcomeEventsController : NSObject<FlutterPlugin>
3232

3333
@property (strong, nonatomic) FlutterMethodChannel *channel;
3434

ios/Classes/OneSignalOutcomeEventsController.m renamed to ios/Classes/OSFlutterOutcomeEventsController.m

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@
2525
* THE SOFTWARE.
2626
*/
2727

28-
#import "OneSignalOutcomeEventsController.h"
28+
#import "OSFlutterOutcomeEventsController.h"
2929
#import <OneSignal/OneSignal.h>
30-
#import "OneSignalCategories.h"
30+
#import "OSFlutterCategories.h"
3131

32-
@implementation OneSignalOutcomeEventsController
32+
@implementation OSFlutterOutcomeEventsController
3333
+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar>*)registrar {
34-
OneSignalOutcomeEventsController *instance = [OneSignalOutcomeEventsController new];
34+
OSFlutterOutcomeEventsController *instance = [OSFlutterOutcomeEventsController new];
3535

3636
instance.channel = [FlutterMethodChannel
3737
methodChannelWithName:@"OneSignal#outcomes"
@@ -53,22 +53,25 @@ - (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result
5353
}
5454

5555
- (void)sendOutcome:(FlutterMethodCall *)call withResult:(FlutterResult)result {
56-
// NSString *name = call.arguments;
57-
[OneSignal onesignal_Log:ONE_S_LL_WARN message:@"Method sendOutcome() not implemented for iOS yet!"];
58-
result(@{});
56+
NSString *name = call.arguments;
57+
[OneSignal sendOutcome:name onSuccess:^(OSOutcomeEvent *outcome) {
58+
result(outcome.jsonRepresentation);
59+
}];
5960
}
6061

6162
- (void)sendUniqueOutcome:(FlutterMethodCall *)call withResult:(FlutterResult)result {
62-
// NSString *name = call.arguments;
63-
[OneSignal onesignal_Log:ONE_S_LL_WARN message:@"Method sendUniqueOutcome() not implemented for iOS yet!"];
64-
result(@{});
63+
NSString *name = call.arguments;
64+
[OneSignal sendUniqueOutcome:name onSuccess:^(OSOutcomeEvent *outcome) {
65+
result(outcome.jsonRepresentation);
66+
}];
6567
}
6668

6769
- (void)sendOutcomeWithValue:(FlutterMethodCall *)call withResult:(FlutterResult)result {
68-
// NSString *name = call.arguments[@"outcome_name"];
69-
// NSNumber *value = call.arguments[@"outcome_value"];
70-
[OneSignal onesignal_Log:ONE_S_LL_WARN message:@"Method sendOutcomeWithValue() not implemented for iOS yet!"];
71-
result(@{});
70+
NSString *name = call.arguments[@"outcome_name"];
71+
NSNumber *value = call.arguments[@"outcome_value"];
72+
[OneSignal sendOutcomeWithValue:name value:value onSuccess:^(OSOutcomeEvent *outcome) {
73+
result(outcome.jsonRepresentation);
74+
}];
7275
}
7376

7477
@end

ios/Classes/OneSignalTagsController.h renamed to ios/Classes/OSFlutterTagsController.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
#import <Foundation/Foundation.h>
2929
#import <Flutter/Flutter.h>
3030

31-
@interface OneSignalTagsController : NSObject<FlutterPlugin>
31+
@interface OSFlutterTagsController : NSObject<FlutterPlugin>
3232

3333
@property (strong, nonatomic) FlutterMethodChannel *channel;
3434

ios/Classes/OneSignalTagsController.m renamed to ios/Classes/OSFlutterTagsController.m

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@
2525
* THE SOFTWARE.
2626
*/
2727

28-
#import "OneSignalTagsController.h"
28+
#import "OSFlutterTagsController.h"
2929
#import <OneSignal/OneSignal.h>
30-
#import "OneSignalCategories.h"
30+
#import "OSFlutterCategories.h"
3131

32-
@implementation OneSignalTagsController
32+
@implementation OSFlutterTagsController
3333
+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar>*)registrar {
34-
OneSignalTagsController *instance = [OneSignalTagsController new];
34+
OSFlutterTagsController *instance = [OSFlutterTagsController new];
3535

3636
instance.channel = [FlutterMethodChannel
3737
methodChannelWithName:@"OneSignal#tags"

lib/src/outcome_event.dart

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,45 +21,49 @@ OSSession sessionFromString(String session) {
2121
class OSOutcomeEvent extends JSONStringRepresentable {
2222

2323
// The session when the outcome event is sent (DIRECT, INDIRECT, UNATTRIBUTED)
24-
OSSession session;
24+
OSSession session = OSSession.DISABLED;
2525

2626
// List of notification ids that were sent with the outcome
27-
List<String> notificationIds;
27+
List<String> notificationIds = [];
2828

2929
// Name of the outcome event
30-
String name;
30+
String name = "";
3131

3232
// Time in millis when the outcome was sent
33-
int timestamp;
33+
int timestamp = 0;
3434

3535
// Value if one exists (default 0.0) that was sent with the outcome
36-
double weight;
36+
double weight = 0.0;
3737

38-
OSOutcomeEvent(Map<String, dynamic> outcome) {
38+
OSOutcomeEvent() {
39+
40+
}
41+
42+
OSOutcomeEvent.fromMap(Map<String, dynamic> outcome) {
3943
// Make sure session exists
40-
this.session = outcome["session"] == null ?
41-
OSSession.DISABLED :
42-
sessionFromString(outcome["session"] as String);
44+
this.session = outcome.containsKey("session") && outcome["session"] != null ?
45+
sessionFromString(outcome["session"] as String) :
46+
OSSession.DISABLED;
4347

4448
// Make sure notification_ids exists
45-
this.notificationIds = outcome["notification_ids"] == null ?
46-
[] :
47-
new List<String>.from(json.decode(outcome["notification_ids"]));
49+
this.notificationIds = outcome.containsKey("notification_ids") && outcome["notification_ids"] != null ?
50+
new List<String>.from(json.decode(outcome["notification_ids"])) :
51+
[];
4852

4953
// Make sure name exists
50-
this.name = outcome["id"] == null ?
51-
"" :
52-
outcome["id"] as String;
54+
this.name = outcome.containsKey("id") && outcome["id"] != null ?
55+
outcome["id"] as String :
56+
"";
5357

5458
// Make sure timestamp exists
55-
this.timestamp = outcome["timestamp"] == null ?
56-
0 :
57-
outcome["timestamp"] as int;
59+
this.timestamp = outcome.containsKey("timestamp") && outcome["timestamp"] != null ?
60+
outcome["timestamp"] as int :
61+
0;
5862

5963
// Make sure weight exists
60-
this.weight = outcome["weight"] == null ?
61-
0 :
62-
double.parse(outcome["weight"] as String);
64+
this.weight = outcome.containsKey("weight") && outcome["weight"] != null ?
65+
double.parse(outcome["weight"] as String) :
66+
0.0;
6367
}
6468

6569
String jsonRepresentation() {

0 commit comments

Comments
 (0)