Skip to content
Closed
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
2 changes: 1 addition & 1 deletion android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -38,5 +38,5 @@ android {
}

dependencies {
implementation 'com.onesignal:OneSignal:5.4.2'
implementation 'com.onesignal:OneSignal:5.6.0'
}
Binary file modified android/gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
5 changes: 3 additions & 2 deletions android/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#Thu Oct 17 14:56:12 PDT 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip
20 changes: 10 additions & 10 deletions android/gradlew.bat

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ private void init(Context context, BinaryMessenger messenger) {
this.messenger = messenger;
OneSignalWrapper.setSdkType("flutter");
// For 5.0.0, hard code to reflect SDK version
OneSignalWrapper.setSdkVersion("050307");
OneSignalWrapper.setSdkVersion("050400");

channel = new MethodChannel(messenger, "OneSignal");
channel.setMethodCallHandler(this);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
Expand Down Expand Up @@ -255,4 +256,41 @@ private static List<Object> convertJSONArrayToList(JSONArray array) throws JSONE
static String setNullIfEmpty(String value) {
return value.isEmpty() ? null : value;
}

/**
* Formats a properties map, recursively stripping null values.
* The native SDK doesn't accept null values in properties currently.
*/
static HashMap<String, Object> formatPropertiesMap(Map<String, Object> map) {
if (map == null) return null;

HashMap<String, Object> result = new HashMap<>();
for (Map.Entry<String, Object> entry : map.entrySet()) {
Object value = entry.getValue();
if (value != null) {
result.put(entry.getKey(), convertValue(value));
}
}
return result;
}

@SuppressWarnings("unchecked")
private static Object convertValue(Object value) {
if (value instanceof Map) {
return formatPropertiesMap((Map<String, Object>) value);
} else if (value instanceof List) {
return stripNullValuesFromList((List<Object>) value);
}
return value;
}

private static List<Object> stripNullValuesFromList(List<Object> list) {
List<Object> result = new ArrayList<>();
for (Object item : list) {
if (item != null) {
result.add(convertValue(item));
}
}
return result;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ public void onMethodCall(MethodCall call, Result result) {
else if (call.method.contentEquals("OneSignal#removeTags")) this.removeTags(call, result);
else if (call.method.contentEquals("OneSignal#getTags")) this.getTags(call, result);
else if (call.method.contentEquals("OneSignal#lifecycleInit")) this.lifecycleInit(result);
else if (call.method.contentEquals("OneSignal#trackEvent")) this.trackEvent(call, result);
else replyNotImplemented(result);
}

Expand Down Expand Up @@ -165,6 +166,14 @@ private void getTags(MethodCall call, Result result) {
replySuccess(result, OneSignal.getUser().getTags());
}

private void trackEvent(MethodCall call, Result result) {
String name = call.argument("name");
Map<String, Object> properties = call.argument("properties");
Map<String, Object> sanitizedProperties = OneSignalSerializer.formatPropertiesMap(properties);
OneSignal.getUser().trackEvent(name, sanitizedProperties);
replySuccess(result, null);
}

@Override
public void onUserStateChange(UserChangedState userChangedState) {
try {
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ spotless {
java {
target 'android/**/*.java', 'example/android/app/**/*.java'
targetExclude '**/build/**', '**/GeneratedPluginRegistrant.java'
palantirJavaFormat('2.28.0')
palantirJavaFormat('2.85.0')
removeUnusedImports()
trimTrailingWhitespace()
endWithNewline()
Expand Down
32 changes: 16 additions & 16 deletions example/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,49 +2,49 @@ PODS:
- Flutter (1.0.0)
- onesignal_flutter (5.3.4):
- Flutter
- OneSignalXCFramework (= 5.2.16)
- OneSignalXCFramework (5.2.16):
- OneSignalXCFramework/OneSignalComplete (= 5.2.16)
- OneSignalXCFramework/OneSignal (5.2.16):
- OneSignalXCFramework (= 5.4.0)
- OneSignalXCFramework (5.4.0):
- OneSignalXCFramework/OneSignalComplete (= 5.4.0)
- OneSignalXCFramework/OneSignal (5.4.0):
- OneSignalXCFramework/OneSignalCore
- OneSignalXCFramework/OneSignalExtension
- OneSignalXCFramework/OneSignalLiveActivities
- OneSignalXCFramework/OneSignalNotifications
- OneSignalXCFramework/OneSignalOSCore
- OneSignalXCFramework/OneSignalOutcomes
- OneSignalXCFramework/OneSignalUser
- OneSignalXCFramework/OneSignalComplete (5.2.16):
- OneSignalXCFramework/OneSignalComplete (5.4.0):
- OneSignalXCFramework/OneSignal
- OneSignalXCFramework/OneSignalInAppMessages
- OneSignalXCFramework/OneSignalLocation
- OneSignalXCFramework/OneSignalCore (5.2.16)
- OneSignalXCFramework/OneSignalExtension (5.2.16):
- OneSignalXCFramework/OneSignalCore (5.4.0)
- OneSignalXCFramework/OneSignalExtension (5.4.0):
- OneSignalXCFramework/OneSignalCore
- OneSignalXCFramework/OneSignalOutcomes
- OneSignalXCFramework/OneSignalInAppMessages (5.2.16):
- OneSignalXCFramework/OneSignalInAppMessages (5.4.0):
- OneSignalXCFramework/OneSignalCore
- OneSignalXCFramework/OneSignalNotifications
- OneSignalXCFramework/OneSignalOSCore
- OneSignalXCFramework/OneSignalOutcomes
- OneSignalXCFramework/OneSignalUser
- OneSignalXCFramework/OneSignalLiveActivities (5.2.16):
- OneSignalXCFramework/OneSignalLiveActivities (5.4.0):
- OneSignalXCFramework/OneSignalCore
- OneSignalXCFramework/OneSignalOSCore
- OneSignalXCFramework/OneSignalUser
- OneSignalXCFramework/OneSignalLocation (5.2.16):
- OneSignalXCFramework/OneSignalLocation (5.4.0):
- OneSignalXCFramework/OneSignalCore
- OneSignalXCFramework/OneSignalNotifications
- OneSignalXCFramework/OneSignalOSCore
- OneSignalXCFramework/OneSignalUser
- OneSignalXCFramework/OneSignalNotifications (5.2.16):
- OneSignalXCFramework/OneSignalNotifications (5.4.0):
- OneSignalXCFramework/OneSignalCore
- OneSignalXCFramework/OneSignalExtension
- OneSignalXCFramework/OneSignalOutcomes
- OneSignalXCFramework/OneSignalOSCore (5.2.16):
- OneSignalXCFramework/OneSignalOSCore (5.4.0):
- OneSignalXCFramework/OneSignalCore
- OneSignalXCFramework/OneSignalOutcomes (5.2.16):
- OneSignalXCFramework/OneSignalOutcomes (5.4.0):
- OneSignalXCFramework/OneSignalCore
- OneSignalXCFramework/OneSignalUser (5.2.16):
- OneSignalXCFramework/OneSignalUser (5.4.0):
- OneSignalXCFramework/OneSignalCore
- OneSignalXCFramework/OneSignalNotifications
- OneSignalXCFramework/OneSignalOSCore
Expand All @@ -67,8 +67,8 @@ EXTERNAL SOURCES:

SPEC CHECKSUMS:
Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467
onesignal_flutter: 1c287b13a09745d60ce7c82a9e80b1dce8e56e64
OneSignalXCFramework: 8ed6648481bee0bd973a138fecd80331b798524f
onesignal_flutter: d9678a4f6766dbb8482d651a61e9daf292fa43e7
OneSignalXCFramework: 95b6391df5a91b448003149c1a633ade42ceca1e

PODFILE CHECKSUM: 008ee3527530ade7ae7311fc02a615df31949c2e

Expand Down
42 changes: 42 additions & 0 deletions example/lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'dart:async';
import 'dart:io';

import 'package:flutter/material.dart';
import 'package:onesignal_flutter/onesignal_flutter.dart';
Expand Down Expand Up @@ -144,6 +145,43 @@ class _MyAppState extends State<MyApp> {
print(tags);
}

void _handleTrackEvent() {
print("Tracking events");

// Detect platform
String platform = Platform.isAndroid
? 'android'
: Platform.isIOS
? 'ios'
: 'unknown';

// Track event without properties
OneSignal.User.trackEvent("Flutter-$platform-noprops");

// Track event with properties
OneSignal.User.trackEvent("Flutter-$platform", {
"someNum": 123,
"someFloat": 3.14159,
"someString": "abc",
"someBool": true,
"someObject": {
"abc": "123",
"nested": {
"def": '456',
},
"ghi": null,
},
"someArray": [1, 2],
"someMixedArray": [
1,
"2",
{"abc": "123"},
null,
],
"someNull": null,
});
}

void _handlePromptForPushPermission() {
print("Prompting for Permission");
OneSignal.Notifications.requestPermission(true);
Expand Down Expand Up @@ -326,6 +364,10 @@ class _MyAppState extends State<MyApp> {
new OneSignalButton(
"Get Tags", _handleGetTags, !_enableConsentButton)
]),
new TableRow(children: [
new OneSignalButton(
"Track Event", _handleTrackEvent, !_enableConsentButton)
]),
new TableRow(children: [
new OneSignalButton("Prompt for Push Permission",
_handlePromptForPushPermission, !_enableConsentButton)
Expand Down
14 changes: 14 additions & 0 deletions ios/Classes/OSFlutterUser.m
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@ - (void)handleMethodCall:(FlutterMethodCall *)call
[self addSms:call withResult:result];
else if ([@"OneSignal#removeSms" isEqualToString:call.method])
[self removeSms:call withResult:result];
else if ([@"OneSignal#trackEvent" isEqualToString:call.method])
[self trackEvent:call withResult:result];
else if ([@"OneSignal#lifecycleInit" isEqualToString:call.method])
[self lifecycleInit:call withResult:result];
else
Expand Down Expand Up @@ -145,6 +147,18 @@ - (void)removeSms:(FlutterMethodCall *)call withResult:(FlutterResult)result {
result(nil);
}

- (void)trackEvent:(FlutterMethodCall *)call withResult:(FlutterResult)result {
NSString *name = call.arguments[@"name"];
NSDictionary *properties = call.arguments[@"properties"];

if (properties == (id)[NSNull null]) {
properties = nil;
}

[OneSignal.User trackEventWithName:name properties:properties];
result(nil);
}

- (void)lifecycleInit:(FlutterMethodCall *)call
withResult:(FlutterResult)result {
[OneSignal.User removeObserver:self];
Expand Down
2 changes: 1 addition & 1 deletion ios/Classes/OneSignalPlugin.m
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ + (instancetype)sharedInstance {
+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar> *)registrar {

OneSignalWrapper.sdkType = @"flutter";
OneSignalWrapper.sdkVersion = @"050307";
OneSignalWrapper.sdkVersion = @"050400";
[OneSignal initialize:nil withLaunchOptions:nil];

OneSignalPlugin.sharedInstance.channel =
Expand Down
2 changes: 1 addition & 1 deletion ios/onesignal_flutter.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Pod::Spec.new do |s|
s.source_files = 'Classes/**/*'
s.public_header_files = 'Classes/**/*.h'
s.dependency 'Flutter'
s.dependency 'OneSignalXCFramework', '5.2.16'
s.dependency 'OneSignalXCFramework', '5.4.0'
s.ios.deployment_target = '11.0'
s.static_framework = true
end
Loading