From a5f1baf97369c19a46f8128e68b59667eaa7c9f1 Mon Sep 17 00:00:00 2001 From: cameron Date: Thu, 23 Oct 2025 10:53:00 -0400 Subject: [PATCH 01/21] updated gradle --- android/gradle/wrapper/gradle-wrapper.properties | 2 +- example/android/app/build.gradle | 3 ++- .../app/src/main/java/io/radar/example/MainApplication.java | 2 -- example/android/gradle/wrapper/gradle-wrapper.properties | 2 +- example/android/settings.gradle | 2 +- example/pubspec.yaml | 2 +- 6 files changed, 6 insertions(+), 7 deletions(-) diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index c17bc40..559efb4 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index 28c9e33..6ab83ef 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -22,7 +22,8 @@ if (flutterVersionName == null) { } android { - compileSdkVersion 34 + namespace "io.radar.example" + compileSdkVersion 35 lintOptions { disable 'InvalidPackage' diff --git a/example/android/app/src/main/java/io/radar/example/MainApplication.java b/example/android/app/src/main/java/io/radar/example/MainApplication.java index 8e050de..4498f1f 100644 --- a/example/android/app/src/main/java/io/radar/example/MainApplication.java +++ b/example/android/app/src/main/java/io/radar/example/MainApplication.java @@ -1,7 +1,6 @@ package io.radar.example; import io.flutter.app.FlutterApplication; -import io.flutter.view.FlutterMain; import io.radar.sdk.Radar; public class MainApplication extends FlutterApplication { @@ -10,7 +9,6 @@ public class MainApplication extends FlutterApplication { public void onCreate() { super.onCreate(); Radar.initialize(this, "prj_test_pk_0000000000000000000000000000000000000000"); - FlutterMain.startInitialization(this); } } \ No newline at end of file diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties index 6b66533..7aeeb11 100644 --- a/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/example/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-all.zip diff --git a/example/android/settings.gradle b/example/android/settings.gradle index 45a6a04..7b9466e 100644 --- a/example/android/settings.gradle +++ b/example/android/settings.gradle @@ -18,7 +18,7 @@ pluginManagement { plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" - id "com.android.application" version "7.4.2" apply false + id "com.android.application" version "8.6.0" apply false // id "org.jetbrains.kotlin.android" version "1.8.21" apply false } diff --git a/example/pubspec.yaml b/example/pubspec.yaml index d92a84d..342c19d 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -23,7 +23,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.5 - permission_handler: ^10.2.0 + permission_handler: ^12.0.0 dev_dependencies: flutter_test: From ded6e8eff82e26c48460176a513812f0165a7ae8 Mon Sep 17 00:00:00 2001 From: cameron Date: Tue, 28 Oct 2025 10:41:16 -0400 Subject: [PATCH 02/21] updated android sdk from 3.18.10 to 3.23.4 --- android/build.gradle | 13 +- .../io/radar/flutter/RadarFlutterPlugin.java | 113 +++++++++++++++- .../RadarFlutterInAppMessageReceiver.kt | 102 +++++++++++++++ example/lib/main.dart | 29 ++++- lib/flutter_radar.dart | 123 +++++++++++++++++- 5 files changed, 368 insertions(+), 12 deletions(-) create mode 100644 android/src/main/kotlin/io/radar/flutter/RadarFlutterInAppMessageReceiver.kt diff --git a/android/build.gradle b/android/build.gradle index 484ef2f..e9b8a52 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -9,6 +9,7 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:7.0.3' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.10" } } @@ -20,6 +21,7 @@ rootProject.allprojects { } apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' android { namespace 'io.radar.flutter' @@ -34,10 +36,19 @@ android { lintOptions { disable 'InvalidPackage' } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } } dependencies { - implementation 'io.radar:sdk:3.18.10' + implementation 'io.radar:sdk:3.23.4' implementation 'com.google.android.gms:play-services-location:21.0.1' implementation 'com.google.code.gson:gson:2.8.6' } diff --git a/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java b/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java index 81ae46e..714f54b 100644 --- a/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java +++ b/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java @@ -57,6 +57,10 @@ import io.radar.sdk.model.RadarRouteMatrix; import io.radar.sdk.RadarTrackingOptions.RadarTrackingOptionsForegroundService; import io.radar.sdk.model.RadarVerifiedLocationToken; +import io.radar.sdk.model.RadarInAppMessage; +import io.radar.sdk.RadarInAppMessageReceiver; +import io.radar.sdk.RadarInAppMessageView; +import io.radar.flutter.RadarFlutterInAppMessageReceiver; import io.flutter.embedding.engine.dart.DartExecutor; import io.flutter.embedding.engine.dart.DartExecutor.DartCallback; @@ -268,6 +272,30 @@ public void onMethodCall(@NonNull MethodCall call, @NonNull final Result result) case "validateAddress": validateAddress(call, result); break; + case "setProduct": + setProduct(call, result); + break; + case "getProduct": + getProduct(result); + break; + case "getTags": + getTags(result); + break; + case "addTags": + addTags(call, result); + break; + case "removeTags": + removeTags(call, result); + break; + case "isTrackingVerified": + isTrackingVerified(result); + break; + case "clearVerifiedLocationToken": + clearVerifiedLocationToken(result); + break; + case "showInAppMessage": + showInAppMessage(call, result); + break; default: result.notImplemented(); break; @@ -284,9 +312,10 @@ private static void initialize(MethodCall call, Result result) { editor.putString("x_platform_sdk_type", "Flutter"); editor.putString("x_platform_sdk_version", "3.12.4"); editor.apply(); - Radar.initialize(mContext, publishableKey); + Radar.initialize(mContext, publishableKey, null, Radar.RadarLocationServicesProvider.GOOGLE, false, null, null, mActivity); Radar.setReceiver(new RadarFlutterReceiver(channel)); Radar.setVerifiedReceiver(new RadarFlutterVerifiedReceiver(channel)); + Radar.setInAppMessageReceiver(new RadarFlutterInAppMessageReceiver(channel)); result.success(true); } @@ -861,12 +890,14 @@ public void run() { String[] categories = categoriesList != null ? (String[])categoriesList.toArray(new String[0]) : new String[0]; ArrayList groupsList = (ArrayList)call.argument("groups"); String[] groups = groupsList != null ? (String[])groupsList.toArray(new String[0]) : new String[0]; + ArrayList countryCodesList = (ArrayList)call.argument("countryCodes"); + String[] countryCodes = countryCodesList != null ? (String[])countryCodesList.toArray(new String[0]) : null; int limit = call.hasArgument("limit") ? (int)call.argument("limit") : 10; if (near != null) { - Radar.searchPlaces(near, radius, chains, chainMetadata, categories, groups, limit, callback); + Radar.searchPlaces(near, radius, chains, chainMetadata, categories, groups, countryCodes, limit, callback); } else { - Radar.searchPlaces(radius, chains, chainMetadata, categories, groups, limit, callback); + Radar.searchPlaces(radius, chains, chainMetadata, categories, groups, countryCodes, limit, callback); } } @@ -1148,6 +1179,21 @@ public void run() { public static void trackVerified(MethodCall call, final Result result) { Boolean beacons = call.hasArgument("beacons") ? call.argument("beacons") : false; + String desiredAccuracyStr = call.hasArgument("desiredAccuracy") ? call.argument("desiredAccuracy") : "medium"; + String reason = call.hasArgument("reason") ? call.argument("reason") : null; + String transactionId = call.hasArgument("transactionId") ? call.argument("transactionId") : null; + + RadarTrackingOptions.RadarTrackingOptionsDesiredAccuracy desiredAccuracy = RadarTrackingOptions.RadarTrackingOptionsDesiredAccuracy.MEDIUM; + if (desiredAccuracyStr != null) { + desiredAccuracyStr = desiredAccuracyStr.toLowerCase(); + if (desiredAccuracyStr.equals("high")) { + desiredAccuracy = RadarTrackingOptions.RadarTrackingOptionsDesiredAccuracy.HIGH; + } else if (desiredAccuracyStr.equals("medium")) { + desiredAccuracy = RadarTrackingOptions.RadarTrackingOptionsDesiredAccuracy.MEDIUM; + } else if (desiredAccuracyStr.equals("low")) { + desiredAccuracy = RadarTrackingOptions.RadarTrackingOptionsDesiredAccuracy.LOW; + } + } Radar.RadarTrackVerifiedCallback callback = new Radar.RadarTrackVerifiedCallback() { @Override @@ -1170,7 +1216,7 @@ public void run() { } }; - Radar.trackVerified(beacons, callback); + Radar.trackVerified(beacons, desiredAccuracy, reason, transactionId, callback); } public static void getVerifiedLocationToken(Result result) { @@ -1236,6 +1282,65 @@ public void run() { Radar.validateAddress(address, callback); } + private static void setProduct(MethodCall call, Result result) { + String product = call.argument("product"); + Radar.setProduct(product); + result.success(true); + } + + private static void getProduct(Result result) { + String product = Radar.getProduct(); + result.success(product); + } + + private static void getTags(Result result) { + String[] tags = Radar.getTags(); + List tagsList = null; + if (tags != null) { + tagsList = new ArrayList<>(java.util.Arrays.asList(tags)); + } + result.success(tagsList); + } + + private static void addTags(MethodCall call, Result result) { + ArrayList tagsList = (ArrayList)call.argument("tags"); + String[] tags = tagsList.toArray(new String[0]); + Radar.addTags(tags); + result.success(true); + } + + private static void removeTags(MethodCall call, Result result) { + ArrayList tagsList = (ArrayList)call.argument("tags"); + String[] tags = tagsList.toArray(new String[0]); + Radar.removeTags(tags); + result.success(true); + } + + private static void isTrackingVerified(Result result) { + Boolean isTrackingVerified = Radar.isTrackingVerified(); + result.success(isTrackingVerified); + } + + private static void clearVerifiedLocationToken(Result result) { + Radar.clearVerifiedLocationToken(); + result.success(true); + } + + private static void showInAppMessage(MethodCall call, Result result) { + try { + String inAppMessageJson = call.argument("inAppMessage"); + RadarInAppMessage inAppMessage = RadarInAppMessage.fromJson(inAppMessageJson); + if (inAppMessage != null) { + Radar.showInAppMessage(inAppMessage); + result.success(true); + } else { + result.error("INVALID_INAPP_MESSAGE", "Invalid in-app message data", null); + } + } catch (Exception e) { + result.error(e.toString(), e.getMessage(), e.getMessage()); + } + } + private static Location locationForMap(HashMap locationMap) { double latitude = (Double)locationMap.get("latitude"); double longitude = (Double)locationMap.get("longitude"); diff --git a/android/src/main/kotlin/io/radar/flutter/RadarFlutterInAppMessageReceiver.kt b/android/src/main/kotlin/io/radar/flutter/RadarFlutterInAppMessageReceiver.kt new file mode 100644 index 0000000..8913265 --- /dev/null +++ b/android/src/main/kotlin/io/radar/flutter/RadarFlutterInAppMessageReceiver.kt @@ -0,0 +1,102 @@ +package io.radar.flutter + +import android.content.Context +import android.os.Handler +import android.os.Looper +import android.util.Log +import android.view.View +import io.flutter.plugin.common.MethodChannel +import io.radar.sdk.Radar +import io.radar.sdk.RadarInAppMessageReceiver +import io.radar.sdk.RadarInAppMessageView +import io.radar.sdk.model.RadarInAppMessage +import com.google.gson.Gson +import org.json.JSONObject +import java.util.* + +class RadarFlutterInAppMessageReceiver(private val channel: MethodChannel) : RadarInAppMessageReceiver { + + companion object { + private const val TAG = "RadarFlutterInAppMessageReceiver" + private val lock = Any() + private val mainHandler = Handler(Looper.getMainLooper()) + } + + override fun onNewInAppMessage(inAppMessage: RadarInAppMessage) { + try { + val obj = JSONObject() + obj.put("inAppMessage", inAppMessage.toJson()) + + val res = Gson().fromJson(obj.toString(), HashMap::class.java) as HashMap + val inAppMessageArgs = ArrayList() + inAppMessageArgs.add(0) + inAppMessageArgs.add(res) + + synchronized(lock) { + mainHandler.post { + channel.invokeMethod("inAppMessage", inAppMessageArgs) + } + } + + Radar.showInAppMessage(inAppMessage) + } catch (e: Exception) { + Log.e(TAG, e.toString()) + } + } + + override fun onInAppMessageDismissed(inAppMessage: RadarInAppMessage) { + try { + val obj = JSONObject() + obj.put("inAppMessage", inAppMessage.toJson()) + + val res = Gson().fromJson(obj.toString(), HashMap::class.java) as HashMap + val dismissedArgs = ArrayList() + dismissedArgs.add(0) + dismissedArgs.add(res) + + synchronized(lock) { + mainHandler.post { + channel.invokeMethod("inAppMessageDismissed", dismissedArgs) + } + } + } catch (e: Exception) { + Log.e(TAG, e.toString()) + } + } + + override fun onInAppMessageButtonClicked(inAppMessage: RadarInAppMessage) { + try { + val obj = JSONObject() + obj.put("inAppMessage", inAppMessage.toJson()) + + val res = Gson().fromJson(obj.toString(), HashMap::class.java) as HashMap + val buttonClickedArgs = ArrayList() + buttonClickedArgs.add(0) + buttonClickedArgs.add(res) + + synchronized(lock) { + mainHandler.post { + channel.invokeMethod("inAppMessageButtonClicked", buttonClickedArgs) + } + } + } catch (e: Exception) { + Log.e(TAG, e.toString()) + } + } + + // override fun createInAppMessageView( + // context: Context, + // inAppMessage: RadarInAppMessage, + // onDismissListener: (() -> Unit)?, + // onInAppMessageButtonClicked: (() -> Unit)?, + // onViewReady: (View) -> Unit + // ) { + // super.createInAppMessageView( + // context, + // inAppMessage, + // onDismissListener, + // onInAppMessageButtonClicked, + // onViewReady + // ) + // } +} diff --git a/example/lib/main.dart b/example/lib/main.dart index b0679d4..4939c5b 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -144,7 +144,8 @@ class _MyAppState extends State with WidgetsBindingObserver { Radar.setForegroundServiceOptions({ 'title': 'Tracking', 'text': 'Trip tracking started', - 'icon': 2131165271, + 'iconString': "ic_notification", + 'iconColor': "#FF6B8D", 'importance': 2, 'updatesOnly': false, 'activity': 'io.radar.example.MainActivity' @@ -362,7 +363,8 @@ class _MyAppState extends State with WidgetsBindingObserver { Radar.setForegroundServiceOptions({ 'title': 'Tracking', 'text': 'Continuous tracking started', - 'icon': 2131165271, + 'iconString': "ic_notification", + 'iconColor': "#FF6B8D", 'importance': 2, 'updatesOnly': false, 'activity': 'io.radar.example.MainActivity' @@ -464,6 +466,29 @@ class _MyAppState extends State with WidgetsBindingObserver { }, child: Text('validateAddress'), ), + ElevatedButton( + style: raisedButtonStyle, + onPressed: () async { + var resp = await Radar.showInAppMessage({ + "type": "banner", + "title": { + "text": "This is the title", + "color": "#000000" + }, + "body": { + "text": "This is a demo message", + "color": "#666666" + }, + "button": { + "text": "Send it", + "color": "#FFFFFF", + "backgroundColor": "#EB0083" + } + }); + print("showInAppMessage: $resp"); + }, + child: Text('showInAppMessage'), + ), ]), ) ), diff --git a/lib/flutter_radar.dart b/lib/flutter_radar.dart index bf8b7d7..5a77931 100644 --- a/lib/flutter_radar.dart +++ b/lib/flutter_radar.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:convert'; import 'package:flutter/services.dart'; import 'dart:ui'; import 'package:flutter/material.dart'; @@ -28,6 +29,9 @@ typedef ErrorCallback = void Function(Map errorEvent); typedef LogCallback = void Function(Map logEvent); typedef EventsCallback = void Function(Map eventsEvent); typedef TokenCallback = void Function(Map tokenEvent); +typedef InAppMessageCallback = void Function(Map inAppMessageEvent); +typedef InAppMessageDismissedCallback = void Function(Map inAppMessageEvent); +typedef InAppMessageButtonClickedCallback = void Function(Map inAppMessageEvent); class Radar { static const MethodChannel _channel = const MethodChannel('flutter_radar'); @@ -38,6 +42,9 @@ class Radar { static LogCallback? foregroundLogCallback; static EventsCallback? foregroundEventsCallback; static TokenCallback? foregroundTokenCallback; + static InAppMessageCallback? foregroundInAppMessageCallback; + static InAppMessageDismissedCallback? foregroundInAppMessageDismissedCallback; + static InAppMessageButtonClickedCallback? foregroundInAppMessageButtonClickedCallback; static Future initialize(String publishableKey) async { try { @@ -73,6 +80,15 @@ class Radar { case 'token': foregroundTokenCallback?.call(args[1] as Map); break; + case 'inAppMessage': + foregroundInAppMessageCallback?.call(args[1] as Map); + break; + case 'inAppMessageDismissed': + foregroundInAppMessageDismissedCallback?.call(args[1] as Map); + break; + case 'inAppMessageButtonClicked': + foregroundInAppMessageButtonClickedCallback?.call(args[1] as Map); + break; } } @@ -327,7 +343,8 @@ class Radar { List? chains, Map? chainMetadata, List? categories, - List? groups}) async { + List? groups, + List? countryCodes}) async { try { return await _channel.invokeMethod('searchPlaces', { 'near': near, @@ -336,7 +353,8 @@ class Radar { 'chains': chains, 'chainMetadata': chainMetadata, 'categories': categories, - 'groups': groups + 'groups': groups, + 'countryCodes': countryCodes }); } on PlatformException catch (e) { print(e); @@ -495,10 +513,14 @@ class Radar { } } - static Future trackVerified({bool? beacons}) async { + static Future trackVerified({bool? beacons, String? desiredAccuracy, String? reason, String? transactionId}) async { try { - return await _channel.invokeMethod( - 'trackVerified', {'beacons': beacons != null ? beacons : false}); + return await _channel.invokeMethod('trackVerified', { + 'beacons': beacons != null ? beacons : false, + 'desiredAccuracy': desiredAccuracy, + 'reason': reason, + 'transactionId': transactionId + }); } on PlatformException catch (e) { print(e); return {'error': e.code}; @@ -528,6 +550,58 @@ class Radar { } } + static Future setProduct(String? product) async { + try { + await _channel.invokeMethod('setProduct', {'product': product}); + } on PlatformException catch (e) { + print(e); + } + } + + static Future getProduct() async { + return await _channel.invokeMethod('getProduct'); + } + + static Future?> getTags() async { + return await _channel.invokeMethod('getTags'); + } + + static Future addTags(List tags) async { + try { + await _channel.invokeMethod('addTags', {'tags': tags}); + } on PlatformException catch (e) { + print(e); + } + } + + static Future removeTags(List tags) async { + try { + await _channel.invokeMethod('removeTags', {'tags': tags}); + } on PlatformException catch (e) { + print(e); + } + } + + static Future isTrackingVerified() async { + return await _channel.invokeMethod('isTrackingVerified'); + } + + static Future clearVerifiedLocationToken() async { + try { + await _channel.invokeMethod('clearVerifiedLocationToken'); + } on PlatformException catch (e) { + print(e); + } + } + + static Future showInAppMessage(Map inAppMessage) async { + try { + await _channel.invokeMethod('showInAppMessage', {'inAppMessage': jsonEncode(inAppMessage)}); + } on PlatformException catch (e) { + print(e); + } + } + static onLocation(LocationCallback callback) { if (foregroundLocationCallback != null) { throw RadarExistingCallbackException(); @@ -594,6 +668,39 @@ class Radar { foregroundTokenCallback = null; } + static onInAppMessage(InAppMessageCallback callback) { + if (foregroundInAppMessageCallback != null) { + throw RadarExistingCallbackException(); + } + foregroundInAppMessageCallback = callback; + } + + static offInAppMessage() { + foregroundInAppMessageCallback = null; + } + + static onInAppMessageDismissed(InAppMessageDismissedCallback callback) { + if (foregroundInAppMessageDismissedCallback != null) { + throw RadarExistingCallbackException(); + } + foregroundInAppMessageDismissedCallback = callback; + } + + static offInAppMessageDismissed() { + foregroundInAppMessageDismissedCallback = null; + } + + static onInAppMessageButtonClicked(InAppMessageButtonClickedCallback callback) { + if (foregroundInAppMessageButtonClickedCallback != null) { + throw RadarExistingCallbackException(); + } + foregroundInAppMessageButtonClickedCallback = callback; + } + + static offInAppMessageButtonClicked() { + foregroundInAppMessageButtonClickedCallback = null; + } + static Map presetContinuousIOS = { "desiredStoppedUpdateInterval": 30, "desiredMovingUpdateInterval": 30, @@ -635,6 +742,8 @@ class Radar { "syncGeofencesLimit": 0, "foregroundServiceEnabled": true, "beacons": false, + "useMotion": false, + "usePressure": false, "startTrackingAfter": null, "stopTrackingAfter": null, }; @@ -680,6 +789,8 @@ class Radar { "syncGeofencesLimit": 10, "foregroundServiceEnabled": false, "beacons": false, + "useMotion": false, + "usePressure": false, "startTrackingAfter": null, "stopTrackingAfter": null, }; @@ -725,6 +836,8 @@ class Radar { "syncGeofencesLimit": 10, "foregroundServiceEnabled": false, "beacons": false, + "useMotion": false, + "usePressure": false, "startTrackingAfter": null, "stopTrackingAfter": null, }; From 7935339a29b0047211fd2862bb37b44056541f94 Mon Sep 17 00:00:00 2001 From: cameron Date: Wed, 29 Oct 2025 08:36:07 -0400 Subject: [PATCH 03/21] removed iam callbacks temporarily --- .../io/radar/flutter/RadarFlutterPlugin.java | 4 - .../RadarFlutterInAppMessageReceiver.kt | 102 ------------------ example/android/app/build.gradle | 2 +- lib/flutter_radar.dart | 54 ++-------- 4 files changed, 7 insertions(+), 155 deletions(-) delete mode 100644 android/src/main/kotlin/io/radar/flutter/RadarFlutterInAppMessageReceiver.kt diff --git a/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java b/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java index 714f54b..0a2d33a 100644 --- a/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java +++ b/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java @@ -58,9 +58,6 @@ import io.radar.sdk.RadarTrackingOptions.RadarTrackingOptionsForegroundService; import io.radar.sdk.model.RadarVerifiedLocationToken; import io.radar.sdk.model.RadarInAppMessage; -import io.radar.sdk.RadarInAppMessageReceiver; -import io.radar.sdk.RadarInAppMessageView; -import io.radar.flutter.RadarFlutterInAppMessageReceiver; import io.flutter.embedding.engine.dart.DartExecutor; import io.flutter.embedding.engine.dart.DartExecutor.DartCallback; @@ -315,7 +312,6 @@ private static void initialize(MethodCall call, Result result) { Radar.initialize(mContext, publishableKey, null, Radar.RadarLocationServicesProvider.GOOGLE, false, null, null, mActivity); Radar.setReceiver(new RadarFlutterReceiver(channel)); Radar.setVerifiedReceiver(new RadarFlutterVerifiedReceiver(channel)); - Radar.setInAppMessageReceiver(new RadarFlutterInAppMessageReceiver(channel)); result.success(true); } diff --git a/android/src/main/kotlin/io/radar/flutter/RadarFlutterInAppMessageReceiver.kt b/android/src/main/kotlin/io/radar/flutter/RadarFlutterInAppMessageReceiver.kt deleted file mode 100644 index 8913265..0000000 --- a/android/src/main/kotlin/io/radar/flutter/RadarFlutterInAppMessageReceiver.kt +++ /dev/null @@ -1,102 +0,0 @@ -package io.radar.flutter - -import android.content.Context -import android.os.Handler -import android.os.Looper -import android.util.Log -import android.view.View -import io.flutter.plugin.common.MethodChannel -import io.radar.sdk.Radar -import io.radar.sdk.RadarInAppMessageReceiver -import io.radar.sdk.RadarInAppMessageView -import io.radar.sdk.model.RadarInAppMessage -import com.google.gson.Gson -import org.json.JSONObject -import java.util.* - -class RadarFlutterInAppMessageReceiver(private val channel: MethodChannel) : RadarInAppMessageReceiver { - - companion object { - private const val TAG = "RadarFlutterInAppMessageReceiver" - private val lock = Any() - private val mainHandler = Handler(Looper.getMainLooper()) - } - - override fun onNewInAppMessage(inAppMessage: RadarInAppMessage) { - try { - val obj = JSONObject() - obj.put("inAppMessage", inAppMessage.toJson()) - - val res = Gson().fromJson(obj.toString(), HashMap::class.java) as HashMap - val inAppMessageArgs = ArrayList() - inAppMessageArgs.add(0) - inAppMessageArgs.add(res) - - synchronized(lock) { - mainHandler.post { - channel.invokeMethod("inAppMessage", inAppMessageArgs) - } - } - - Radar.showInAppMessage(inAppMessage) - } catch (e: Exception) { - Log.e(TAG, e.toString()) - } - } - - override fun onInAppMessageDismissed(inAppMessage: RadarInAppMessage) { - try { - val obj = JSONObject() - obj.put("inAppMessage", inAppMessage.toJson()) - - val res = Gson().fromJson(obj.toString(), HashMap::class.java) as HashMap - val dismissedArgs = ArrayList() - dismissedArgs.add(0) - dismissedArgs.add(res) - - synchronized(lock) { - mainHandler.post { - channel.invokeMethod("inAppMessageDismissed", dismissedArgs) - } - } - } catch (e: Exception) { - Log.e(TAG, e.toString()) - } - } - - override fun onInAppMessageButtonClicked(inAppMessage: RadarInAppMessage) { - try { - val obj = JSONObject() - obj.put("inAppMessage", inAppMessage.toJson()) - - val res = Gson().fromJson(obj.toString(), HashMap::class.java) as HashMap - val buttonClickedArgs = ArrayList() - buttonClickedArgs.add(0) - buttonClickedArgs.add(res) - - synchronized(lock) { - mainHandler.post { - channel.invokeMethod("inAppMessageButtonClicked", buttonClickedArgs) - } - } - } catch (e: Exception) { - Log.e(TAG, e.toString()) - } - } - - // override fun createInAppMessageView( - // context: Context, - // inAppMessage: RadarInAppMessage, - // onDismissListener: (() -> Unit)?, - // onInAppMessageButtonClicked: (() -> Unit)?, - // onViewReady: (View) -> Unit - // ) { - // super.createInAppMessageView( - // context, - // inAppMessage, - // onDismissListener, - // onInAppMessageButtonClicked, - // onViewReady - // ) - // } -} diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index 6ab83ef..e34c5be 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -47,7 +47,7 @@ android { } dependencies { - implementation 'io.radar:sdk:3.18.9' + implementation 'io.radar:sdk:3.23.4' implementation "com.google.android.play:integrity:1.2.0" } } diff --git a/lib/flutter_radar.dart b/lib/flutter_radar.dart index 5a77931..9a006b3 100644 --- a/lib/flutter_radar.dart +++ b/lib/flutter_radar.dart @@ -29,9 +29,6 @@ typedef ErrorCallback = void Function(Map errorEvent); typedef LogCallback = void Function(Map logEvent); typedef EventsCallback = void Function(Map eventsEvent); typedef TokenCallback = void Function(Map tokenEvent); -typedef InAppMessageCallback = void Function(Map inAppMessageEvent); -typedef InAppMessageDismissedCallback = void Function(Map inAppMessageEvent); -typedef InAppMessageButtonClickedCallback = void Function(Map inAppMessageEvent); class Radar { static const MethodChannel _channel = const MethodChannel('flutter_radar'); @@ -42,9 +39,6 @@ class Radar { static LogCallback? foregroundLogCallback; static EventsCallback? foregroundEventsCallback; static TokenCallback? foregroundTokenCallback; - static InAppMessageCallback? foregroundInAppMessageCallback; - static InAppMessageDismissedCallback? foregroundInAppMessageDismissedCallback; - static InAppMessageButtonClickedCallback? foregroundInAppMessageButtonClickedCallback; static Future initialize(String publishableKey) async { try { @@ -80,15 +74,6 @@ class Radar { case 'token': foregroundTokenCallback?.call(args[1] as Map); break; - case 'inAppMessage': - foregroundInAppMessageCallback?.call(args[1] as Map); - break; - case 'inAppMessageDismissed': - foregroundInAppMessageDismissedCallback?.call(args[1] as Map); - break; - case 'inAppMessageButtonClicked': - foregroundInAppMessageButtonClickedCallback?.call(args[1] as Map); - break; } } @@ -668,39 +653,6 @@ class Radar { foregroundTokenCallback = null; } - static onInAppMessage(InAppMessageCallback callback) { - if (foregroundInAppMessageCallback != null) { - throw RadarExistingCallbackException(); - } - foregroundInAppMessageCallback = callback; - } - - static offInAppMessage() { - foregroundInAppMessageCallback = null; - } - - static onInAppMessageDismissed(InAppMessageDismissedCallback callback) { - if (foregroundInAppMessageDismissedCallback != null) { - throw RadarExistingCallbackException(); - } - foregroundInAppMessageDismissedCallback = callback; - } - - static offInAppMessageDismissed() { - foregroundInAppMessageDismissedCallback = null; - } - - static onInAppMessageButtonClicked(InAppMessageButtonClickedCallback callback) { - if (foregroundInAppMessageButtonClickedCallback != null) { - throw RadarExistingCallbackException(); - } - foregroundInAppMessageButtonClickedCallback = callback; - } - - static offInAppMessageButtonClicked() { - foregroundInAppMessageButtonClickedCallback = null; - } - static Map presetContinuousIOS = { "desiredStoppedUpdateInterval": 30, "desiredMovingUpdateInterval": 30, @@ -720,6 +672,8 @@ class Radar { "useVisits": false, "useSignificantLocationChanges": false, "beacons": false, + "useMotion": false, + "usePressure": false, "sync": 'all', }; @@ -767,6 +721,8 @@ class Radar { "useVisits": true, "useSignificantLocationChanges": true, "beacons": false, + "useMotion": false, + "usePressure": false, "sync": 'all', }; @@ -814,6 +770,8 @@ class Radar { "useVisits": true, "useSignificantLocationChanges": false, "beacons": false, + "useMotion": false, + "usePressure": false, "sync": 'all', }; From 20091ea797a85a51faf1a07e1aaf6303e0b002cb Mon Sep 17 00:00:00 2001 From: cameron Date: Wed, 29 Oct 2025 09:12:47 -0400 Subject: [PATCH 04/21] trying to update ios sdk from 3.18.3 to 3.23.4 --- .../io/radar/flutter/RadarFlutterPlugin.java | 23 +++-- example/ios/Podfile | 2 +- .../xcshareddata/xcschemes/Runner.xcscheme | 3 + example/lib/main.dart | 46 +++++----- ios/Classes/RadarFlutterPlugin.m | 90 ++++++++++++++++++- ios/flutter_radar.podspec | 2 +- lib/flutter_radar.dart | 2 +- 7 files changed, 132 insertions(+), 36 deletions(-) diff --git a/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java b/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java index 0a2d33a..6431bf7 100644 --- a/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java +++ b/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java @@ -1324,13 +1324,22 @@ private static void clearVerifiedLocationToken(Result result) { private static void showInAppMessage(MethodCall call, Result result) { try { - String inAppMessageJson = call.argument("inAppMessage"); - RadarInAppMessage inAppMessage = RadarInAppMessage.fromJson(inAppMessageJson); - if (inAppMessage != null) { - Radar.showInAppMessage(inAppMessage); - result.success(true); - } else { - result.error("INVALID_INAPP_MESSAGE", "Invalid in-app message data", null); + HashMap inAppMessageMap = call.argument("inAppMessage"); + String inAppMessageJson = null; + try { + if (inAppMessageMap != null) { + JSONObject jsonObj = new JSONObject(new Gson().toJsonTree(inAppMessageMap).getAsJsonObject().toString()); + inAppMessageJson = jsonObj.toString(); + } + RadarInAppMessage inAppMessage = RadarInAppMessage.fromJson(inAppMessageJson); + if (inAppMessage != null) { + Radar.showInAppMessage(inAppMessage); + result.success(true); + } else { + result.error("INVALID_INAPP_MESSAGE", "Invalid in-app message data", inAppMessageJson); + } + } catch (Exception e) { + result.error("INVALID_INAPP_MESSAGE", "Failed to convert inAppMessage to JSON", e.getMessage()); } } catch (Exception e) { result.error(e.toString(), e.getMessage(), e.getMessage()); diff --git a/example/ios/Podfile b/example/ios/Podfile index 2e5a71f..7aa3bd7 100644 --- a/example/ios/Podfile +++ b/example/ios/Podfile @@ -29,7 +29,7 @@ flutter_ios_podfile_setup target 'Runner' do flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) - pod 'RadarSDKMotion', '3.18.3' + pod 'RadarSDKMotion', '3.23.4' end post_install do |installer| diff --git a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index e67b280..fc5ae03 100644 --- a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -26,6 +26,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit" shouldUseLaunchSchemeArgsEnv = "YES"> @@ -45,11 +46,13 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" debugDocumentVersioning = "YES" debugServiceExtension = "internal" + enableGPUValidationMode = "1" allowLocationSimulation = "YES"> diff --git a/example/lib/main.dart b/example/lib/main.dart index 4939c5b..ac3c910 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -138,6 +138,29 @@ class _MyAppState extends State with WidgetsBindingObserver { }, child: Text('request activity permissions'), ), + ElevatedButton( + style: raisedButtonStyle, + onPressed: () async { + var resp = await Radar.showInAppMessage({ + "type": "banner", + "title": { + "text": "This is the title", + "color": "#000000" + }, + "body": { + "text": "This is a demo message", + "color": "#666666" + }, + "button": { + "text": "Send it", + "color": "#FFFFFF", + "backgroundColor": "#EB0083" + } + }); + print("showInAppMessage: $resp"); + }, + child: Text('showInAppMessage'), + ), ElevatedButton( style: raisedButtonStyle, onPressed: () async { @@ -466,29 +489,6 @@ class _MyAppState extends State with WidgetsBindingObserver { }, child: Text('validateAddress'), ), - ElevatedButton( - style: raisedButtonStyle, - onPressed: () async { - var resp = await Radar.showInAppMessage({ - "type": "banner", - "title": { - "text": "This is the title", - "color": "#000000" - }, - "body": { - "text": "This is a demo message", - "color": "#666666" - }, - "button": { - "text": "Send it", - "color": "#FFFFFF", - "backgroundColor": "#EB0083" - } - }); - print("showInAppMessage: $resp"); - }, - child: Text('showInAppMessage'), - ), ]), ) ), diff --git a/ios/Classes/RadarFlutterPlugin.m b/ios/Classes/RadarFlutterPlugin.m index eebb921..b3d8612 100644 --- a/ios/Classes/RadarFlutterPlugin.m +++ b/ios/Classes/RadarFlutterPlugin.m @@ -2,6 +2,8 @@ #import +@import RadarSDK; + @interface RadarFlutterPlugin() @property (strong, nonatomic) FlutterMethodChannel *channel; @@ -132,6 +134,22 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result { [self isUsingRemoteTrackingOptions:call withResult:result]; } else if ([@"validateAddress" isEqualToString:call.method]) { [self validateAddress:call withResult:result]; + } else if ([@"setProduct" isEqualToString:call.method]) { + [self setProduct:call withResult:result]; + } else if ([@"getProduct" isEqualToString:call.method]) { + [self getProduct:call withResult:result]; + } else if ([@"getTags" isEqualToString:call.method]) { + [self getTags:call withResult:result]; + } else if ([@"addTags" isEqualToString:call.method]) { + [self addTags:call withResult:result]; + } else if ([@"removeTags" isEqualToString:call.method]) { + [self removeTags:call withResult:result]; + } else if ([@"isTrackingVerified" isEqualToString:call.method]) { + [self isTrackingVerified:call withResult:result]; + } else if ([@"clearVerifiedLocationToken" isEqualToString:call.method]) { + [self clearVerifiedLocationToken:call withResult:result]; + } else if ([@"showInAppMessage" isEqualToString:call.method]) { + [self showInAppMessage:call withResult:result]; } else { result(FlutterMethodNotImplemented); } @@ -684,6 +702,7 @@ - (void)searchPlaces:(FlutterMethodCall *)call withResult:(FlutterResult)result NSDictionary *chainMetadata = [argsDict[@"chainMetadata"] isKindOfClass:[NSNull class]] ? nil : argsDict[@"chainMetadata"]; NSArray *categories = [argsDict[@"categories"] isKindOfClass:[NSNull class]] ? nil : argsDict[@"categories"]; NSArray *groups = [argsDict[@"groups"] isKindOfClass:[NSNull class]] ? nil : argsDict[@"groups"]; + NSArray *countryCodes = [argsDict[@"countryCodes"] isKindOfClass:[NSNull class]] ? nil : argsDict[@"countryCodes"]; NSNumber *limitNumber = argsDict[@"limit"]; int limit; if (limitNumber != nil && [limitNumber isKindOfClass:[NSNumber class]]) { @@ -693,9 +712,9 @@ - (void)searchPlaces:(FlutterMethodCall *)call withResult:(FlutterResult)result } if (near != nil) { - [Radar searchPlacesNear:near radius:radius chains:chains chainMetadata:chainMetadata categories:categories groups:groups limit:limit completionHandler:completionHandler]; + [Radar searchPlacesNear:near radius:radius chains:chains chainMetadata:chainMetadata categories:categories groups:groups countryCodes:countryCodes limit:limit completionHandler:completionHandler]; } else { - [Radar searchPlacesWithRadius:radius chains:chains chainMetadata:chainMetadata categories:categories groups:groups limit:limit completionHandler:completionHandler]; + [Radar searchPlacesWithRadius:radius chains:chains chainMetadata:chainMetadata categories:categories groups:groups countryCodes:countryCodes limit:limit completionHandler:completionHandler]; } } @@ -977,6 +996,22 @@ - (void)trackVerified:(FlutterMethodCall *)call withResult:(FlutterResult)result beacons = [beaconsNumber boolValue]; } + RadarTrackingOptionsDesiredAccuracy desiredAccuracy = RadarTrackingOptionsDesiredAccuracyMedium; + NSString *desiredAccuracyStr = argsDict[@"desiredAccuracy"]; + if (desiredAccuracyStr != nil && [desiredAccuracyStr isKindOfClass:[NSString class]]) { + NSString *lowerAccuracyStr = [desiredAccuracyStr lowercaseString]; + if ([lowerAccuracyStr isEqualToString:@"high"]) { + desiredAccuracy = RadarTrackingOptionsDesiredAccuracyHigh; + } else if ([lowerAccuracyStr isEqualToString:@"medium"]) { + desiredAccuracy = RadarTrackingOptionsDesiredAccuracyMedium; + } else if ([lowerAccuracyStr isEqualToString:@"low"]) { + desiredAccuracy = RadarTrackingOptionsDesiredAccuracyLow; + } + } + + NSString *reason = argsDict[@"reason"]; + NSString *transactionId = argsDict[@"transactionId"]; + RadarTrackVerifiedCompletionHandler completionHandler = ^(RadarStatus status, RadarVerifiedLocationToken* token) { if (status == RadarStatusSuccess) { NSMutableDictionary *dict = [NSMutableDictionary new]; @@ -986,7 +1021,7 @@ - (void)trackVerified:(FlutterMethodCall *)call withResult:(FlutterResult)result } }; - [Radar trackVerifiedWithBeacons:beacons completionHandler:completionHandler]; + [Radar trackVerifiedWithBeacons:beacons desiredAccuracy:desiredAccuracy reason:reason transactionId:transactionId completionHandler:completionHandler]; } - (void)getVerifiedLocationToken:(FlutterResult)result { @@ -1068,6 +1103,55 @@ - (void)didUpdateToken:(RadarVerifiedLocationToken *)token { } } +- (void)setProduct:(FlutterMethodCall *)call withResult:(FlutterResult)result { + NSDictionary *argsDict = call.arguments; + NSString *product = argsDict[@"product"]; + [Radar setProduct:product]; + result(nil); +} + +- (void)getProduct:(FlutterMethodCall *)call withResult:(FlutterResult)result { + NSString *product = [Radar getProduct]; + result(product); +} + +- (void)getTags:(FlutterMethodCall *)call withResult:(FlutterResult)result { + NSArray *tags = [Radar getTags]; + result(tags); +} + +- (void)addTags:(FlutterMethodCall *)call withResult:(FlutterResult)result { + NSDictionary *argsDict = call.arguments; + NSArray *tags = argsDict[@"tags"]; + [Radar addTags:tags]; + result(nil); +} + +- (void)removeTags:(FlutterMethodCall *)call withResult:(FlutterResult)result { + NSDictionary *argsDict = call.arguments; + NSArray *tags = argsDict[@"tags"]; + [Radar removeTags:tags]; + result(nil); +} + +- (void)isTrackingVerified:(FlutterMethodCall *)call withResult:(FlutterResult)result { + BOOL isTrackingVerified = [Radar isTrackingVerified]; + result(@(isTrackingVerified)); +} + +- (void)clearVerifiedLocationToken:(FlutterMethodCall *)call withResult:(FlutterResult)result { + [Radar clearVerifiedLocationToken]; + result(nil); +} + +- (void)showInAppMessage:(FlutterMethodCall *)call withResult:(FlutterResult)result { + NSDictionary *argsDict = call.arguments; + NSDictionary *inAppMessageDict = argsDict[@"inAppMessage"]; + [Radar showInAppMessage:[RadarInAppMessage fromDictionary:inAppMessageDict]]; + result(nil); +} + + @end @implementation RadarStreamHandler diff --git a/ios/flutter_radar.podspec b/ios/flutter_radar.podspec index 866ae20..edfcea9 100644 --- a/ios/flutter_radar.podspec +++ b/ios/flutter_radar.podspec @@ -10,7 +10,7 @@ Pod::Spec.new do |s| s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' - s.dependency 'RadarSDK', '3.19.5' + s.dependency 'RadarSDK', '3.23.4' s.platform = :ios, '10.0' s.static_framework = true diff --git a/lib/flutter_radar.dart b/lib/flutter_radar.dart index 9a006b3..14f9482 100644 --- a/lib/flutter_radar.dart +++ b/lib/flutter_radar.dart @@ -581,7 +581,7 @@ class Radar { static Future showInAppMessage(Map inAppMessage) async { try { - await _channel.invokeMethod('showInAppMessage', {'inAppMessage': jsonEncode(inAppMessage)}); + await _channel.invokeMethod('showInAppMessage', {'inAppMessage': inAppMessage}); } on PlatformException catch (e) { print(e); } From 1b79fd4cd86a1ffcb553e3730786becced0c0877 Mon Sep 17 00:00:00 2001 From: cameron Date: Wed, 29 Oct 2025 14:33:01 -0400 Subject: [PATCH 05/21] fixed ios crashing issue --- example/ios/Flutter/AppFrameworkInfo.plist | 2 +- example/ios/Podfile | 2 +- example/ios/Runner.xcodeproj/project.pbxproj | 6 +++--- ios/Classes/RadarFlutterPlugin.m | 2 -- ios/flutter_radar.podspec | 4 ++-- ios/flutter_radar.podspec.template | 2 +- 6 files changed, 8 insertions(+), 10 deletions(-) diff --git a/example/ios/Flutter/AppFrameworkInfo.plist b/example/ios/Flutter/AppFrameworkInfo.plist index 8c6e561..d57061d 100644 --- a/example/ios/Flutter/AppFrameworkInfo.plist +++ b/example/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/example/ios/Podfile b/example/ios/Podfile index 7aa3bd7..753f8be 100644 --- a/example/ios/Podfile +++ b/example/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '12.0' +platform :ios, '15.6' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index 6f58db5..58b357c 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -375,7 +375,7 @@ "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -508,7 +508,7 @@ "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -536,7 +536,7 @@ "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/ios/Classes/RadarFlutterPlugin.m b/ios/Classes/RadarFlutterPlugin.m index b3d8612..b275d3a 100644 --- a/ios/Classes/RadarFlutterPlugin.m +++ b/ios/Classes/RadarFlutterPlugin.m @@ -1,7 +1,5 @@ #import "RadarFlutterPlugin.h" -#import - @import RadarSDK; @interface RadarFlutterPlugin() diff --git a/ios/flutter_radar.podspec b/ios/flutter_radar.podspec index edfcea9..9bb687a 100644 --- a/ios/flutter_radar.podspec +++ b/ios/flutter_radar.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'flutter_radar' - s.version = '3.12.4' + s.version = '3.23.4' s.summary = 'Flutter package for Radar, the leading geofencing and location tracking platform' s.description = 'Flutter package for Radar, the leading geofencing and location tracking platform' s.homepage = 'http://example.com' @@ -11,7 +11,7 @@ Pod::Spec.new do |s| s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' s.dependency 'RadarSDK', '3.23.4' - s.platform = :ios, '10.0' + s.platform = :ios, '15.6' s.static_framework = true # Flutter.framework does not contain a i386 slice. Only x86_64 simulators are supported. diff --git a/ios/flutter_radar.podspec.template b/ios/flutter_radar.podspec.template index cf6ab3e..6aa3fdf 100644 --- a/ios/flutter_radar.podspec.template +++ b/ios/flutter_radar.podspec.template @@ -11,7 +11,7 @@ Pod::Spec.new do |s| s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' s.dependency 'RadarSDK', '{{ version }}' - s.platform = :ios, '10.0' + s.platform = :ios, '15.6' s.static_framework = true # Flutter.framework does not contain a i386 slice. Only x86_64 simulators are supported. From fbf814fb7defdf04d1530a6aad395a4921a51986 Mon Sep 17 00:00:00 2001 From: cameron Date: Thu, 30 Oct 2025 09:01:47 -0400 Subject: [PATCH 06/21] updated android to 3.23.5 --- android/build.gradle | 2 +- example/android/app/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index e9b8a52..2d70efb 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -48,7 +48,7 @@ android { } dependencies { - implementation 'io.radar:sdk:3.23.4' + implementation 'io.radar:sdk:3.23.5' implementation 'com.google.android.gms:play-services-location:21.0.1' implementation 'com.google.code.gson:gson:2.8.6' } diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index e34c5be..092e482 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -47,7 +47,7 @@ android { } dependencies { - implementation 'io.radar:sdk:3.23.4' + implementation 'io.radar:sdk:3.23.5' implementation "com.google.android.play:integrity:1.2.0" } } From 698b090f167bf405dba3826aa7e17ee00a86144b Mon Sep 17 00:00:00 2001 From: cameron Date: Thu, 30 Oct 2025 09:04:08 -0400 Subject: [PATCH 07/21] bumped version number --- android/build.gradle | 2 +- android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java | 2 +- ios/Classes/RadarFlutterPlugin.m | 2 +- pubspec.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 2d70efb..d464401 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -31,7 +31,7 @@ android { minSdkVersion 16 targetSdkVersion 31 versionCode 1 - versionName '3.12.4' + versionName '3.23.4' } lintOptions { disable 'InvalidPackage' diff --git a/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java b/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java index 6431bf7..12b64b7 100644 --- a/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java +++ b/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java @@ -307,7 +307,7 @@ private static void initialize(MethodCall call, Result result) { String publishableKey = call.argument("publishableKey"); SharedPreferences.Editor editor = mContext.getSharedPreferences("RadarSDK", Context.MODE_PRIVATE).edit(); editor.putString("x_platform_sdk_type", "Flutter"); - editor.putString("x_platform_sdk_version", "3.12.4"); + editor.putString("x_platform_sdk_version", "3.23.4"); editor.apply(); Radar.initialize(mContext, publishableKey, null, Radar.RadarLocationServicesProvider.GOOGLE, false, null, null, mActivity); Radar.setReceiver(new RadarFlutterReceiver(channel)); diff --git a/ios/Classes/RadarFlutterPlugin.m b/ios/Classes/RadarFlutterPlugin.m index b275d3a..a59d0f7 100644 --- a/ios/Classes/RadarFlutterPlugin.m +++ b/ios/Classes/RadarFlutterPlugin.m @@ -158,7 +158,7 @@ - (void)initialize:(FlutterMethodCall *)call withResult:(FlutterResult)result { NSString *publishableKey = argsDict[@"publishableKey"]; [[NSUserDefaults standardUserDefaults] setObject:@"Flutter" forKey:@"radar-xPlatformSDKType"]; - [[NSUserDefaults standardUserDefaults] setObject:@"3.12.4" forKey:@"radar-xPlatformSDKVersion"]; + [[NSUserDefaults standardUserDefaults] setObject:@"3.23.4" forKey:@"radar-xPlatformSDKVersion"]; [Radar initializeWithPublishableKey:publishableKey]; result(nil); } diff --git a/pubspec.yaml b/pubspec.yaml index fb0b721..d4f7b7f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_radar description: Flutter package for Radar, the leading geofencing and location tracking platform -version: 3.12.4 +version: 3.23.4 homepage: https://github.com/radarlabs/flutter-radar environment: From 7aa2f771ea8a7142e97979a176a8fe6679497d82 Mon Sep 17 00:00:00 2001 From: cameron-radar Date: Thu, 30 Oct 2025 09:04:57 -0400 Subject: [PATCH 08/21] Update lib/flutter_radar.dart Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- lib/flutter_radar.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/flutter_radar.dart b/lib/flutter_radar.dart index 14f9482..163646a 100644 --- a/lib/flutter_radar.dart +++ b/lib/flutter_radar.dart @@ -1,5 +1,4 @@ import 'dart:async'; -import 'dart:convert'; import 'package:flutter/services.dart'; import 'dart:ui'; import 'package:flutter/material.dart'; From a376d4e06cac7cc1e8007950da8bb08171cf9c26 Mon Sep 17 00:00:00 2001 From: cameron-radar Date: Thu, 30 Oct 2025 09:06:06 -0400 Subject: [PATCH 09/21] Update android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../src/main/java/io/radar/flutter/RadarFlutterPlugin.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java b/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java index 12b64b7..e72023d 100644 --- a/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java +++ b/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java @@ -1300,14 +1300,14 @@ private static void getTags(Result result) { private static void addTags(MethodCall call, Result result) { ArrayList tagsList = (ArrayList)call.argument("tags"); - String[] tags = tagsList.toArray(new String[0]); + String[] tags = (tagsList != null) ? tagsList.toArray(new String[0]) : new String[0]; Radar.addTags(tags); result.success(true); } private static void removeTags(MethodCall call, Result result) { ArrayList tagsList = (ArrayList)call.argument("tags"); - String[] tags = tagsList.toArray(new String[0]); + String[] tags = (tagsList != null) ? tagsList.toArray(new String[0]) : new String[0]; Radar.removeTags(tags); result.success(true); } From 1345e3257f4b9ea1644453eb03d0559abc2a0960 Mon Sep 17 00:00:00 2001 From: cameron-radar Date: Thu, 30 Oct 2025 09:08:54 -0400 Subject: [PATCH 10/21] Update ios/Classes/RadarFlutterPlugin.m Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- ios/Classes/RadarFlutterPlugin.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ios/Classes/RadarFlutterPlugin.m b/ios/Classes/RadarFlutterPlugin.m index a59d0f7..dd5e7a6 100644 --- a/ios/Classes/RadarFlutterPlugin.m +++ b/ios/Classes/RadarFlutterPlugin.m @@ -1145,7 +1145,9 @@ - (void)clearVerifiedLocationToken:(FlutterMethodCall *)call withResult:(Flutter - (void)showInAppMessage:(FlutterMethodCall *)call withResult:(FlutterResult)result { NSDictionary *argsDict = call.arguments; NSDictionary *inAppMessageDict = argsDict[@"inAppMessage"]; - [Radar showInAppMessage:[RadarInAppMessage fromDictionary:inAppMessageDict]]; + if (inAppMessageDict && ![inAppMessageDict isKindOfClass:[NSNull class]]) { + [Radar showInAppMessage:[RadarInAppMessage fromDictionary:inAppMessageDict]]; + } result(nil); } From a5ba1242f0f89bd1cfb715adf655ba5ba5478e78 Mon Sep 17 00:00:00 2001 From: cameron Date: Thu, 30 Oct 2025 09:11:18 -0400 Subject: [PATCH 11/21] added changelog --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b30b3a4..b1d547b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,7 @@ +# 3.23.4 +- Updates iOS and Android sdk to 3.23.4 and 3.23.5, respectively + # 3.12.4 - Fixes breaking change on Flutter 3.29.0 by removing v1 embedding From db3cffaa226f3a2f12a6fd6a2184a172b7f8a610 Mon Sep 17 00:00:00 2001 From: cameron Date: Thu, 6 Nov 2025 10:18:04 -0500 Subject: [PATCH 12/21] set version to 3.23.4-beta.1 --- android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java | 2 +- ios/Classes/RadarFlutterPlugin.m | 2 +- pubspec.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java b/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java index e72023d..587ee28 100644 --- a/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java +++ b/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java @@ -307,7 +307,7 @@ private static void initialize(MethodCall call, Result result) { String publishableKey = call.argument("publishableKey"); SharedPreferences.Editor editor = mContext.getSharedPreferences("RadarSDK", Context.MODE_PRIVATE).edit(); editor.putString("x_platform_sdk_type", "Flutter"); - editor.putString("x_platform_sdk_version", "3.23.4"); + editor.putString("x_platform_sdk_version", "3.23.4-beta.1"); editor.apply(); Radar.initialize(mContext, publishableKey, null, Radar.RadarLocationServicesProvider.GOOGLE, false, null, null, mActivity); Radar.setReceiver(new RadarFlutterReceiver(channel)); diff --git a/ios/Classes/RadarFlutterPlugin.m b/ios/Classes/RadarFlutterPlugin.m index dd5e7a6..eba8392 100644 --- a/ios/Classes/RadarFlutterPlugin.m +++ b/ios/Classes/RadarFlutterPlugin.m @@ -158,7 +158,7 @@ - (void)initialize:(FlutterMethodCall *)call withResult:(FlutterResult)result { NSString *publishableKey = argsDict[@"publishableKey"]; [[NSUserDefaults standardUserDefaults] setObject:@"Flutter" forKey:@"radar-xPlatformSDKType"]; - [[NSUserDefaults standardUserDefaults] setObject:@"3.23.4" forKey:@"radar-xPlatformSDKVersion"]; + [[NSUserDefaults standardUserDefaults] setObject:@"3.23.4-beta.1" forKey:@"radar-xPlatformSDKVersion"]; [Radar initializeWithPublishableKey:publishableKey]; result(nil); } diff --git a/pubspec.yaml b/pubspec.yaml index d4f7b7f..08b0b32 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_radar description: Flutter package for Radar, the leading geofencing and location tracking platform -version: 3.23.4 +version: 3.23.4-beta.1 homepage: https://github.com/radarlabs/flutter-radar environment: From 582634fdbfeb4fd55af3a1e01ea98e87d37460cd Mon Sep 17 00:00:00 2001 From: cameron Date: Thu, 6 Nov 2025 10:25:13 -0500 Subject: [PATCH 13/21] updated changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b1d547b..e4406df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ -# 3.23.4 +# 3.23.4-beta.1 - Updates iOS and Android sdk to 3.23.4 and 3.23.5, respectively # 3.12.4 From 54123e6e78e85342900678fa51f674085341c2e9 Mon Sep 17 00:00:00 2001 From: cameron Date: Thu, 6 Nov 2025 13:42:42 -0500 Subject: [PATCH 14/21] changed ios target to 12.0, updated readme --- README.md | 4 +++ example/ios/Podfile | 3 +- example/ios/Runner.xcodeproj/project.pbxproj | 35 ++++++++++++++++---- ios/flutter_radar.podspec | 2 +- ios/flutter_radar.podspec.template | 2 +- 5 files changed, 36 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index fe8eec9..076bb33 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,10 @@ Then, see the Flutter package documentation [here](https://radar.com/documentati See an example app in `example/`. +## iOS Installation + +For iOS projects using this plugin, if your iOS deployment target is below 15.0, you must add `use_frameworks!` to your `Podfile`: + ## Support Have questions? We're here to help! Email us at [support@radar.com](mailto:support@radar.com). diff --git a/example/ios/Podfile b/example/ios/Podfile index 753f8be..26d8fe4 100644 --- a/example/ios/Podfile +++ b/example/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '15.6' +platform :ios, '13.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' @@ -28,6 +28,7 @@ require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelpe flutter_ios_podfile_setup target 'Runner' do + use_frameworks! flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) pod 'RadarSDKMotion', '3.23.4' end diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index 58b357c..d4f65d8 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -14,7 +14,7 @@ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; - E0F475EE7DA180B233B26F03 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 80832F7060CA121BF7C5159A /* libPods-Runner.a */; }; + E9202D87BABE3D21C4B8C9C4 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0BF6B8D2FABC5D8F1A9DD5EE /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -31,13 +31,13 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0BF6B8D2FABC5D8F1A9DD5EE /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - 80832F7060CA121BF7C5159A /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 87C188BC246525AC987E390D /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; @@ -56,7 +56,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E0F475EE7DA180B233B26F03 /* libPods-Runner.a in Frameworks */, + E9202D87BABE3D21C4B8C9C4 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -66,7 +66,7 @@ 69B467C1459EE0FA7AD9EAAD /* Frameworks */ = { isa = PBXGroup; children = ( - 80832F7060CA121BF7C5159A /* libPods-Runner.a */, + 0BF6B8D2FABC5D8F1A9DD5EE /* Pods_Runner.framework */, ); name = Frameworks; sourceTree = ""; @@ -150,6 +150,7 @@ 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 717FBB0054865DEA34CA9827 /* [CP] Copy Pods Resources */, + BA45F2487E261BF5443C5B76 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -277,6 +278,23 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build\n"; }; + BA45F2487E261BF5443C5B76 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -356,6 +374,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 10.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; + STRIP_INSTALLED_PRODUCT = NO; SUPPORTED_PLATFORMS = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; @@ -375,7 +394,7 @@ "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -441,6 +460,7 @@ MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; + STRIP_INSTALLED_PRODUCT = NO; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -489,6 +509,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 10.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; + STRIP_INSTALLED_PRODUCT = NO; SUPPORTED_PLATFORMS = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; @@ -508,7 +529,7 @@ "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -536,7 +557,7 @@ "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/ios/flutter_radar.podspec b/ios/flutter_radar.podspec index 9bb687a..cb237d1 100644 --- a/ios/flutter_radar.podspec +++ b/ios/flutter_radar.podspec @@ -11,7 +11,7 @@ Pod::Spec.new do |s| s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' s.dependency 'RadarSDK', '3.23.4' - s.platform = :ios, '15.6' + s.platform = :ios, '12.0' s.static_framework = true # Flutter.framework does not contain a i386 slice. Only x86_64 simulators are supported. diff --git a/ios/flutter_radar.podspec.template b/ios/flutter_radar.podspec.template index 6aa3fdf..f8354a1 100644 --- a/ios/flutter_radar.podspec.template +++ b/ios/flutter_radar.podspec.template @@ -11,7 +11,7 @@ Pod::Spec.new do |s| s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' s.dependency 'RadarSDK', '{{ version }}' - s.platform = :ios, '15.6' + s.platform = :ios, '12.0' s.static_framework = true # Flutter.framework does not contain a i386 slice. Only x86_64 simulators are supported. From c6d5a259364544c66120e2bff2b087f6e7eb03bf Mon Sep 17 00:00:00 2001 From: cameron Date: Thu, 6 Nov 2025 13:43:30 -0500 Subject: [PATCH 15/21] updated changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e4406df..82b60ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +# 3.23.4-beta.2 +- Changed iOS platform target to 12.0 # 3.23.4-beta.1 - Updates iOS and Android sdk to 3.23.4 and 3.23.5, respectively From a6b27df7c06fbdac788ce0567f5d897e64f782ce Mon Sep 17 00:00:00 2001 From: cameron Date: Thu, 6 Nov 2025 13:44:41 -0500 Subject: [PATCH 16/21] updated version --- android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java | 2 +- ios/Classes/RadarFlutterPlugin.m | 2 +- pubspec.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java b/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java index 587ee28..8a7b5a4 100644 --- a/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java +++ b/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java @@ -307,7 +307,7 @@ private static void initialize(MethodCall call, Result result) { String publishableKey = call.argument("publishableKey"); SharedPreferences.Editor editor = mContext.getSharedPreferences("RadarSDK", Context.MODE_PRIVATE).edit(); editor.putString("x_platform_sdk_type", "Flutter"); - editor.putString("x_platform_sdk_version", "3.23.4-beta.1"); + editor.putString("x_platform_sdk_version", "3.23.4-beta.2"); editor.apply(); Radar.initialize(mContext, publishableKey, null, Radar.RadarLocationServicesProvider.GOOGLE, false, null, null, mActivity); Radar.setReceiver(new RadarFlutterReceiver(channel)); diff --git a/ios/Classes/RadarFlutterPlugin.m b/ios/Classes/RadarFlutterPlugin.m index eba8392..0f3f32b 100644 --- a/ios/Classes/RadarFlutterPlugin.m +++ b/ios/Classes/RadarFlutterPlugin.m @@ -158,7 +158,7 @@ - (void)initialize:(FlutterMethodCall *)call withResult:(FlutterResult)result { NSString *publishableKey = argsDict[@"publishableKey"]; [[NSUserDefaults standardUserDefaults] setObject:@"Flutter" forKey:@"radar-xPlatformSDKType"]; - [[NSUserDefaults standardUserDefaults] setObject:@"3.23.4-beta.1" forKey:@"radar-xPlatformSDKVersion"]; + [[NSUserDefaults standardUserDefaults] setObject:@"3.23.4-beta.2" forKey:@"radar-xPlatformSDKVersion"]; [Radar initializeWithPublishableKey:publishableKey]; result(nil); } diff --git a/pubspec.yaml b/pubspec.yaml index 08b0b32..7bd3fae 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_radar description: Flutter package for Radar, the leading geofencing and location tracking platform -version: 3.23.4-beta.1 +version: 3.23.4-beta.2 homepage: https://github.com/radarlabs/flutter-radar environment: From 0710bcb26820b3858aba878b34d148cfe423045d Mon Sep 17 00:00:00 2001 From: cameron Date: Tue, 18 Nov 2025 13:22:57 -0500 Subject: [PATCH 17/21] updated ios to 3.24.0 --- CHANGELOG.md | 4 ++++ android/build.gradle | 2 +- .../src/main/java/io/radar/flutter/RadarFlutterPlugin.java | 2 +- example/ios/Podfile | 2 +- example/ios/Runner.xcodeproj/project.pbxproj | 6 +++--- example/lib/main.dart | 2 +- ios/Classes/RadarFlutterPlugin.m | 7 +++++-- ios/flutter_radar.podspec | 4 ++-- lib/flutter_radar.dart | 3 ++- pubspec.yaml | 2 +- 10 files changed, 21 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 82b60ab..bd2c497 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# 3.24.0-beta.1 +- Updates iOS sdk to 3.24.0 +- Adds `silentPush` initialization option to iOS + # 3.23.4-beta.2 - Changed iOS platform target to 12.0 diff --git a/android/build.gradle b/android/build.gradle index d464401..5ef95bf 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -31,7 +31,7 @@ android { minSdkVersion 16 targetSdkVersion 31 versionCode 1 - versionName '3.23.4' + versionName '3.23.5' } lintOptions { disable 'InvalidPackage' diff --git a/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java b/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java index 8a7b5a4..fd62514 100644 --- a/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java +++ b/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java @@ -307,7 +307,7 @@ private static void initialize(MethodCall call, Result result) { String publishableKey = call.argument("publishableKey"); SharedPreferences.Editor editor = mContext.getSharedPreferences("RadarSDK", Context.MODE_PRIVATE).edit(); editor.putString("x_platform_sdk_type", "Flutter"); - editor.putString("x_platform_sdk_version", "3.23.4-beta.2"); + editor.putString("x_platform_sdk_version", "3.24.0-beta.1"); editor.apply(); Radar.initialize(mContext, publishableKey, null, Radar.RadarLocationServicesProvider.GOOGLE, false, null, null, mActivity); Radar.setReceiver(new RadarFlutterReceiver(channel)); diff --git a/example/ios/Podfile b/example/ios/Podfile index 26d8fe4..4b86db3 100644 --- a/example/ios/Podfile +++ b/example/ios/Podfile @@ -30,7 +30,7 @@ flutter_ios_podfile_setup target 'Runner' do use_frameworks! flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) - pod 'RadarSDKMotion', '3.23.4' + pod 'RadarSDKMotion', '3.24.0' end post_install do |installer| diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index d4f65d8..e584c00 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -371,7 +371,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; STRIP_INSTALLED_PRODUCT = NO; @@ -456,7 +456,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -506,7 +506,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; STRIP_INSTALLED_PRODUCT = NO; diff --git a/example/lib/main.dart b/example/lib/main.dart index ac3c910..f630f1e 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -69,7 +69,7 @@ class _MyAppState extends State with WidgetsBindingObserver { } Future initRadar() async { - Radar.initialize('prj_test_pk_0000000000000000000000000000000000000000'); + Radar.initialize('prj_test_pk_0000000000000000000000000000000000000000', silentPush: true); Radar.setUserId('flutter'); Radar.setDescription('Flutter'); Radar.setMetadata({'foo': 'bar', 'bax': true, 'qux': 1}); diff --git a/ios/Classes/RadarFlutterPlugin.m b/ios/Classes/RadarFlutterPlugin.m index 0f3f32b..1598b7b 100644 --- a/ios/Classes/RadarFlutterPlugin.m +++ b/ios/Classes/RadarFlutterPlugin.m @@ -157,9 +157,12 @@ - (void)initialize:(FlutterMethodCall *)call withResult:(FlutterResult)result { NSDictionary *argsDict = call.arguments; NSString *publishableKey = argsDict[@"publishableKey"]; + BOOL silentPush = argsDict[@"silentPush"]; [[NSUserDefaults standardUserDefaults] setObject:@"Flutter" forKey:@"radar-xPlatformSDKType"]; - [[NSUserDefaults standardUserDefaults] setObject:@"3.23.4-beta.2" forKey:@"radar-xPlatformSDKVersion"]; - [Radar initializeWithPublishableKey:publishableKey]; + [[NSUserDefaults standardUserDefaults] setObject:@"3.24.0-beta.1" forKey:@"radar-xPlatformSDKVersion"]; + RadarInitializeOptions *options = [[RadarInitializeOptions alloc] init]; + options.silentPush = silentPush; + [Radar initializeWithPublishableKey:publishableKey options:options]; result(nil); } diff --git a/ios/flutter_radar.podspec b/ios/flutter_radar.podspec index cb237d1..c6baa7c 100644 --- a/ios/flutter_radar.podspec +++ b/ios/flutter_radar.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'flutter_radar' - s.version = '3.23.4' + s.version = '3.24.0' s.summary = 'Flutter package for Radar, the leading geofencing and location tracking platform' s.description = 'Flutter package for Radar, the leading geofencing and location tracking platform' s.homepage = 'http://example.com' @@ -10,7 +10,7 @@ Pod::Spec.new do |s| s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' - s.dependency 'RadarSDK', '3.23.4' + s.dependency 'RadarSDK', '3.24.0' s.platform = :ios, '12.0' s.static_framework = true diff --git a/lib/flutter_radar.dart b/lib/flutter_radar.dart index 163646a..6ae9c4a 100644 --- a/lib/flutter_radar.dart +++ b/lib/flutter_radar.dart @@ -39,10 +39,11 @@ class Radar { static EventsCallback? foregroundEventsCallback; static TokenCallback? foregroundTokenCallback; - static Future initialize(String publishableKey) async { + static Future initialize(String publishableKey, {bool silentPush = false}) async { try { await _channel.invokeMethod('initialize', { 'publishableKey': publishableKey, + 'silentPush': silentPush, }); _channel.setMethodCallHandler(_handleMethodCall); } on PlatformException catch (e) { diff --git a/pubspec.yaml b/pubspec.yaml index 7bd3fae..98065ee 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_radar description: Flutter package for Radar, the leading geofencing and location tracking platform -version: 3.23.4-beta.2 +version: 3.24.0 homepage: https://github.com/radarlabs/flutter-radar environment: From 1c1ecd4a31f14d8c48fd32fe6d7f8c8dfa0ff628 Mon Sep 17 00:00:00 2001 From: cameron Date: Tue, 18 Nov 2025 14:19:30 -0500 Subject: [PATCH 18/21] fixed some version typos --- android/build.gradle | 2 +- ios/flutter_radar.podspec | 2 +- pubspec.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 5ef95bf..b8540c0 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -31,7 +31,7 @@ android { minSdkVersion 16 targetSdkVersion 31 versionCode 1 - versionName '3.23.5' + versionName '3.24.0-beta.1' } lintOptions { disable 'InvalidPackage' diff --git a/ios/flutter_radar.podspec b/ios/flutter_radar.podspec index c6baa7c..9429349 100644 --- a/ios/flutter_radar.podspec +++ b/ios/flutter_radar.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'flutter_radar' - s.version = '3.24.0' + s.version = '3.24.0-beta.1' s.summary = 'Flutter package for Radar, the leading geofencing and location tracking platform' s.description = 'Flutter package for Radar, the leading geofencing and location tracking platform' s.homepage = 'http://example.com' diff --git a/pubspec.yaml b/pubspec.yaml index 98065ee..06e610f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_radar description: Flutter package for Radar, the leading geofencing and location tracking platform -version: 3.24.0 +version: 3.24.0-beta.1 homepage: https://github.com/radarlabs/flutter-radar environment: From 8a2bf68efe85353d5a74e30cef1cf38eef81967c Mon Sep 17 00:00:00 2001 From: cameron Date: Tue, 18 Nov 2025 14:27:03 -0500 Subject: [PATCH 19/21] lowering ios target to 12.0 even though newer flutter versions will automatically bump it --- example/ios/Flutter/AppFrameworkInfo.plist | 2 +- example/ios/Podfile | 2 +- example/ios/Runner.xcodeproj/project.pbxproj | 12 ++++++------ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/example/ios/Flutter/AppFrameworkInfo.plist b/example/ios/Flutter/AppFrameworkInfo.plist index d57061d..8c6e561 100644 --- a/example/ios/Flutter/AppFrameworkInfo.plist +++ b/example/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 13.0 + 12.0 diff --git a/example/ios/Podfile b/example/ios/Podfile index 4b86db3..b773cde 100644 --- a/example/ios/Podfile +++ b/example/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '13.0' +platform :ios, '12.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index e584c00..173dafb 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -371,7 +371,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; STRIP_INSTALLED_PRODUCT = NO; @@ -394,7 +394,7 @@ "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -456,7 +456,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -506,7 +506,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; STRIP_INSTALLED_PRODUCT = NO; @@ -529,7 +529,7 @@ "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -557,7 +557,7 @@ "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", From 7c959849d63c3f84d68042905416423225b3fba8 Mon Sep 17 00:00:00 2001 From: cameron Date: Thu, 20 Nov 2025 09:57:38 -0500 Subject: [PATCH 20/21] updated iOS to 3.24.1 --- CHANGELOG.md | 3 +++ android/build.gradle | 2 +- .../src/main/java/io/radar/flutter/RadarFlutterPlugin.java | 2 +- example/.gitignore | 3 +++ example/ios/Podfile | 2 +- ios/Classes/RadarFlutterPlugin.m | 2 +- ios/flutter_radar.podspec | 6 +++--- ios/flutter_radar.podspec.template | 1 + pubspec.yaml | 2 +- 9 files changed, 15 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a968a4d..909088c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +# 3.24.0-beta.1 +- Updates iOS sdk to 3.24.1 + # 3.24.0-beta.1 - Updates iOS sdk to 3.24.0 - Adds `silentPush` initialization option to iOS diff --git a/android/build.gradle b/android/build.gradle index b8540c0..3a91de3 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -31,7 +31,7 @@ android { minSdkVersion 16 targetSdkVersion 31 versionCode 1 - versionName '3.24.0-beta.1' + versionName '3.24.0-beta.2' } lintOptions { disable 'InvalidPackage' diff --git a/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java b/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java index fd62514..457133b 100644 --- a/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java +++ b/android/src/main/java/io/radar/flutter/RadarFlutterPlugin.java @@ -307,7 +307,7 @@ private static void initialize(MethodCall call, Result result) { String publishableKey = call.argument("publishableKey"); SharedPreferences.Editor editor = mContext.getSharedPreferences("RadarSDK", Context.MODE_PRIVATE).edit(); editor.putString("x_platform_sdk_type", "Flutter"); - editor.putString("x_platform_sdk_version", "3.24.0-beta.1"); + editor.putString("x_platform_sdk_version", "3.24.0-beta.2"); editor.apply(); Radar.initialize(mContext, publishableKey, null, Radar.RadarLocationServicesProvider.GOOGLE, false, null, null, mActivity); Radar.setReceiver(new RadarFlutterReceiver(channel)); diff --git a/example/.gitignore b/example/.gitignore index f3c2053..e2ac677 100644 --- a/example/.gitignore +++ b/example/.gitignore @@ -42,3 +42,6 @@ app.*.map.json # Exceptions to above rules. !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages + +.fvm/ +.fvmrc diff --git a/example/ios/Podfile b/example/ios/Podfile index b773cde..c2e51a0 100644 --- a/example/ios/Podfile +++ b/example/ios/Podfile @@ -30,7 +30,7 @@ flutter_ios_podfile_setup target 'Runner' do use_frameworks! flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) - pod 'RadarSDKMotion', '3.24.0' + pod 'RadarSDKMotion', '3.24.1' end post_install do |installer| diff --git a/ios/Classes/RadarFlutterPlugin.m b/ios/Classes/RadarFlutterPlugin.m index 1598b7b..1a584b7 100644 --- a/ios/Classes/RadarFlutterPlugin.m +++ b/ios/Classes/RadarFlutterPlugin.m @@ -159,7 +159,7 @@ - (void)initialize:(FlutterMethodCall *)call withResult:(FlutterResult)result { NSString *publishableKey = argsDict[@"publishableKey"]; BOOL silentPush = argsDict[@"silentPush"]; [[NSUserDefaults standardUserDefaults] setObject:@"Flutter" forKey:@"radar-xPlatformSDKType"]; - [[NSUserDefaults standardUserDefaults] setObject:@"3.24.0-beta.1" forKey:@"radar-xPlatformSDKVersion"]; + [[NSUserDefaults standardUserDefaults] setObject:@"3.24.0-beta.2" forKey:@"radar-xPlatformSDKVersion"]; RadarInitializeOptions *options = [[RadarInitializeOptions alloc] init]; options.silentPush = silentPush; [Radar initializeWithPublishableKey:publishableKey options:options]; diff --git a/ios/flutter_radar.podspec b/ios/flutter_radar.podspec index 9429349..9ef2e0d 100644 --- a/ios/flutter_radar.podspec +++ b/ios/flutter_radar.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'flutter_radar' - s.version = '3.24.0-beta.1' + s.version = '3.24.0-beta.2' s.summary = 'Flutter package for Radar, the leading geofencing and location tracking platform' s.description = 'Flutter package for Radar, the leading geofencing and location tracking platform' s.homepage = 'http://example.com' @@ -10,8 +10,8 @@ Pod::Spec.new do |s| s.source_files = 'Classes/**/*' s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' - s.dependency 'RadarSDK', '3.24.0' - s.platform = :ios, '12.0' + s.dependency 'RadarSDK', '3.24.1' + s.ios.deployment_target = '12.0' s.static_framework = true # Flutter.framework does not contain a i386 slice. Only x86_64 simulators are supported. diff --git a/ios/flutter_radar.podspec.template b/ios/flutter_radar.podspec.template index f8354a1..5dd19e9 100644 --- a/ios/flutter_radar.podspec.template +++ b/ios/flutter_radar.podspec.template @@ -12,6 +12,7 @@ Pod::Spec.new do |s| s.dependency 'Flutter' s.dependency 'RadarSDK', '{{ version }}' s.platform = :ios, '12.0' + s.ios.deployment_target = '12.0' s.static_framework = true # Flutter.framework does not contain a i386 slice. Only x86_64 simulators are supported. diff --git a/pubspec.yaml b/pubspec.yaml index 06e610f..60122bd 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_radar description: Flutter package for Radar, the leading geofencing and location tracking platform -version: 3.24.0-beta.1 +version: 3.24.0-beta.2 homepage: https://github.com/radarlabs/flutter-radar environment: From 10fd82615e0d2059d880d2bd44ee9050e94c6720 Mon Sep 17 00:00:00 2001 From: cameron Date: Thu, 20 Nov 2025 10:01:15 -0500 Subject: [PATCH 21/21] typo --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 909088c..efbdab6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# 3.24.0-beta.1 +# 3.24.0-beta.2 - Updates iOS sdk to 3.24.1 # 3.24.0-beta.1