From 84dccd5c6e86e34014feb2177396e50575acfcd1 Mon Sep 17 00:00:00 2001 From: Rodrigo de Souza Marques Date: Sat, 26 Nov 2022 01:03:32 -0300 Subject: [PATCH 1/4] =?UTF-8?q?Vers=C3=A3o=206.4.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * New Methods: - `addFacebookPartnerParameter` - See [documentation](https://help.branch.io/developers-hub/docs/pass-hashed-information-for-facebook-advanced-matching) on partner parameters for details. - `clearPartnerParameter` - Clears all Partner Parameters - `setPreinstallCampaign` - [Add the pre-install campaign analytics](https://help.branch.io/developers-hub/docs/pre-install-analytics) - `setPreinstallPartner` - [Add the pre-install campaign analytics](https://help.branch.io/developers-hub/docs/pre-install-analytics) --- CHANGELOG.md | 7 + .../FlutterBranchSdkPlugin.java | 71 +++++++ .../xcshareddata/xcschemes/Runner.xcscheme | 174 +++++++++--------- example/lib/main.dart | 6 + ios/Classes/SwiftFlutterBranchSdkPlugin.swift | 33 +++- ios/flutter_branch_sdk.podspec | 2 +- lib/src/flutter_branch_sdk.dart | 24 +++ .../flutter_branch_sdk_method_channel.dart | 30 ++- ...flutter_branch_sdk_platform_interface.dart | 24 +++ lib/src/flutter_branch_sdk_web.dart | 32 +++- pubspec.yaml | 2 +- 11 files changed, 309 insertions(+), 96 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d55fc1cc..f03e454d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +## 6.4.0 +* New Methods: + - `addFacebookPartnerParameter` - See [documentation](https://help.branch.io/developers-hub/docs/pass-hashed-information-for-facebook-advanced-matching) on partner parameters for details. + - `clearPartnerParameter` - Clears all Partner Parameters + - `setPreinstallCampaign` - [Add the pre-install campaign analytics](https://help.branch.io/developers-hub/docs/pre-install-analytics) + - `setPreinstallPartner` - [Add the pre-install campaign analytics](https://help.branch.io/developers-hub/docs/pre-install-analytics) + ## 6.3.0 * New Method `handleDeepLink` * Fix issue #188: `Failed to handle method call: java.lang.NullPointerException` diff --git a/android/src/main/java/br/com/rsmarques/flutter_branch_sdk/FlutterBranchSdkPlugin.java b/android/src/main/java/br/com/rsmarques/flutter_branch_sdk/FlutterBranchSdkPlugin.java index c3aa69b4..aabc49c1 100644 --- a/android/src/main/java/br/com/rsmarques/flutter_branch_sdk/FlutterBranchSdkPlugin.java +++ b/android/src/main/java/br/com/rsmarques/flutter_branch_sdk/FlutterBranchSdkPlugin.java @@ -301,6 +301,18 @@ public void onMethodCall(@NonNull MethodCall call, @NonNull Result rawResult) { case "handleDeepLink": handleDeepLink(call); break; + case "addFacebookPartnerParameter": + addFacebookPartnerParameter(call); + break; + case "clearPartnerParameters" : + clearPartnerParameters(); + break; + case "setPreinstallCampaign" : + setPreinstallCampaign(call); + break; + case "setPreinstallPartner" : + setPreinstallPartner(call); + break; default: result.notImplemented(); break; @@ -754,6 +766,7 @@ public void onFailure(Exception error) { result.success(response); } } + private void handleDeepLink(final MethodCall call) { LogUtils.debug(DEBUG_NAME, "handleDeepLink call"); @@ -770,6 +783,64 @@ private void handleDeepLink(final MethodCall call) { activity.startActivity(intent); } + private void addFacebookPartnerParameter(MethodCall call) { + LogUtils.debug(DEBUG_NAME, "addFacebookPartnerParameter call"); + if (!(call.arguments instanceof Map)) { + throw new IllegalArgumentException("Map argument expected"); + } + final String key = call.argument("key"); + final String value = call.argument("value"); + + new Handler(Looper.getMainLooper()).post(new Runnable() { + @Override + public void run() { + Branch.getAutoInstance(context).addFacebookPartnerParameterWithName(key, value); + } + }); + } + + private void clearPartnerParameters() { + LogUtils.debug(DEBUG_NAME, "clearPartnerParameters call"); + + new Handler(Looper.getMainLooper()).post(new Runnable() { + @Override + public void run() { + Branch.getAutoInstance(context).clearPartnerParameters(); + } + }); + } + + private void setPreinstallCampaign(MethodCall call) { + LogUtils.debug(DEBUG_NAME, "setPreinstallCampaign call"); + if (!(call.arguments instanceof Map)) { + throw new IllegalArgumentException("Map argument expected"); + } + + final String value = call.argument("value"); + + new Handler(Looper.getMainLooper()).post(new Runnable() { + @Override + public void run() { + Branch.getAutoInstance(context).setPreinstallCampaign(value); + } + }); + } + + private void setPreinstallPartner(MethodCall call) { + LogUtils.debug(DEBUG_NAME, "setPreinstallPartner call"); + if (!(call.arguments instanceof Map)) { + throw new IllegalArgumentException("Map argument expected"); + } + + final String value = call.argument("value"); + + new Handler(Looper.getMainLooper()).post(new Runnable() { + @Override + public void run() { + Branch.getAutoInstance(context).setPreinstallPartner(value); + } + }); + } } diff --git a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index f9cbb254..c87d15a3 100644 --- a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,87 +1,87 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example/lib/main.dart b/example/lib/main.dart index 69df7499..f51635af 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -9,6 +9,12 @@ import 'custom_button.dart'; void main() { WidgetsFlutterBinding.ensureInitialized(); + FlutterBranchSdk.setPreinstallCampaign('My Campaign Name'); + FlutterBranchSdk.setPreinstallPartner('Branch \$3p Parameter Value'); + FlutterBranchSdk.addFacebookPartnerParameter( + 'em', '11234e56af071e9c79927651156bd7a10bca8ac34672aba121056e2698ee7088'); + //FlutterBranchSdk.clearPartnerParameters(); + runApp(const MyApp()); } diff --git a/ios/Classes/SwiftFlutterBranchSdkPlugin.swift b/ios/Classes/SwiftFlutterBranchSdkPlugin.swift index 63b83166..235cdca7 100644 --- a/ios/Classes/SwiftFlutterBranchSdkPlugin.swift +++ b/ios/Classes/SwiftFlutterBranchSdkPlugin.swift @@ -226,12 +226,24 @@ public class SwiftFlutterBranchSdkPlugin: NSObject, FlutterPlugin, FlutterStream case "getQRCode": getQRCode(call: call, result: result) break - case"shareWithLPLinkMetadata": + case "shareWithLPLinkMetadata": shareWithLPLinkMetadata(call: call, result: result) break - case"handleDeepLink": + case "handleDeepLink": handleDeepLink(call: call) break + case "addFacebookPartnerParameter" : + addFacebookPartnerParameter(call: call) + break + case "clearPartnerParameters" : + Branch.getInstance().clearPartnerParameters() + break + case "setPreinstallCampaign" : + setPreinstallPartner(call: call) + break + case "setPreinstallPartner" : + setPreinstallPartner(call: call) + break default: result(FlutterMethodNotImplemented) break @@ -570,6 +582,23 @@ public class SwiftFlutterBranchSdkPlugin: NSObject, FlutterPlugin, FlutterStream Branch.getInstance().handleDeepLink(withNewSession: URL(string: url)) } + private func addFacebookPartnerParameter(call: FlutterMethodCall) { + let args = call.arguments as! [String: Any?] + let key = args["key"] as! String + let value = args["value"] as! String + + DispatchQueue.main.async { + Branch.getInstance().addFacebookPartnerParameter(withName: key, value:value) + } + } + + private func setPreinstallCampaign(call: FlutterMethodCall) { + } + + private func setPreinstallPartner(call: FlutterMethodCall) { + } + + /* https://developer.apple.com/documentation/apptrackingtransparency/attrackingmanager diff --git a/ios/flutter_branch_sdk.podspec b/ios/flutter_branch_sdk.podspec index cbb7b684..7cf03b36 100644 --- a/ios/flutter_branch_sdk.podspec +++ b/ios/flutter_branch_sdk.podspec @@ -4,7 +4,7 @@ # Pod::Spec.new do |s| s.name = 'flutter_branch_sdk' - s.version = '3.0.0' + s.version = '6.4.0' s.summary = 'Flutter Plugin for create deep link using Brach SDK (https://branch.io). This plugin provides a cross-platform (iOS, Android, Web).' s.description = <<-DESC Flutter Plugin for create deep link using Brach SDK (https://branch.io). This plugin provides a cross-platform (iOS, Android, Web). diff --git a/lib/src/flutter_branch_sdk.dart b/lib/src/flutter_branch_sdk.dart index 3eaeec75..5828139f 100644 --- a/lib/src/flutter_branch_sdk.dart +++ b/lib/src/flutter_branch_sdk.dart @@ -190,6 +190,7 @@ class FlutterBranchSdk { buo: buo, linkProperties: linkProperties, qrCodeSettings: qrCode); } + ///Share with LPLinkMetadata on iOS static void shareWithLPLinkMetadata( {required BranchUniversalObject buo, required BranchLinkProperties linkProperties, @@ -204,7 +205,30 @@ class FlutterBranchSdk { buo: buo, linkProperties: linkProperties, icon: icon, title: title); } + ///Have Branch end the current deep link session and start a new session with the provided URL. static void handleDeepLink(String url) { FlutterBranchSdkPlatform.instance.handleDeepLink(url); } + + /// Add a Partner Parameter for Facebook. + /// Once set, this parameter is attached to installs, opens and events until cleared or the app restarts. + /// See Facebook's documentation for details on valid parameters + static void addFacebookPartnerParameter(String key, String value) { + FlutterBranchSdkPlatform.instance.addFacebookPartnerParameter(key, value); + } + + /// Clears all Partner Parameters + static void clearPartnerParameters() { + FlutterBranchSdkPlatform.instance.clearPartnerParameters(); + } + + /// Add the pre-install campaign analytics + static void setPreinstallCampaign(String value) { + FlutterBranchSdkPlatform.instance.setPreinstallCampaign(value); + } + + /// Add the pre-install campaign analytics + static void setPreinstallPartner(String value) { + FlutterBranchSdkPlatform.instance.setPreinstallPartner(value); + } } diff --git a/lib/src/flutter_branch_sdk_method_channel.dart b/lib/src/flutter_branch_sdk_method_channel.dart index 2c3a652b..5b524c93 100644 --- a/lib/src/flutter_branch_sdk_method_channel.dart +++ b/lib/src/flutter_branch_sdk_method_channel.dart @@ -1,8 +1,5 @@ import 'dart:io'; -//import 'dart:typed_data'; - -import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart'; @@ -344,4 +341,31 @@ class FlutterBranchSdkMethodChannel implements FlutterBranchSdkPlatform { } messageChannel.invokeMethod('handleDeepLink', {'url': url}); } + + /// Add a Partner Parameter for Facebook. + /// Once set, this parameter is attached to installs, opens and events until cleared or the app restarts. + /// See Facebook's documentation for details on valid parameters + @override + void addFacebookPartnerParameter(String key, String value) { + messageChannel.invokeMethod( + 'addFacebookPartnerParameter', {'key': key, 'value': value}); + } + + /// Clears all Partner Parameters + @override + void clearPartnerParameters() { + messageChannel.invokeMethod('clearPartnerParameters'); + } + + /// Add the pre-install campaign analytics + @override + void setPreinstallCampaign(String value) { + messageChannel.invokeMethod('setPreinstallCampaign', {'value': value}); + } + + /// Add the pre-install campaign analytics + @override + void setPreinstallPartner(String value) { + messageChannel.invokeMethod('setPreinstallPartner', {'value': value}); + } } diff --git a/lib/src/flutter_branch_sdk_platform_interface.dart b/lib/src/flutter_branch_sdk_platform_interface.dart index becd1693..fe4e89ea 100644 --- a/lib/src/flutter_branch_sdk_platform_interface.dart +++ b/lib/src/flutter_branch_sdk_platform_interface.dart @@ -210,6 +210,7 @@ abstract class FlutterBranchSdkPlatform extends PlatformInterface { throw UnimplementedError('getQRCodeAsImage has not been implemented'); } + ///Showing a Share Sheet with LPLinkMetadata in iOS void shareWithLPLinkMetadata( {required BranchUniversalObject buo, required BranchLinkProperties linkProperties, @@ -223,4 +224,27 @@ abstract class FlutterBranchSdkPlatform extends PlatformInterface { void handleDeepLink(String url) async { throw UnimplementedError('handleDeepLink has not been implemented'); } + + /// Add the pre-install campaign analytics + void setPreinstallCampaign(String value) { + throw UnimplementedError('setPreinstallCampaign has not been implemented'); + } + + /// Add the pre-install campaign analytics + void setPreinstallPartner(String value) { + throw UnimplementedError('setPreinstallPartner has not been implemented'); + } + + /// Add a Partner Parameter for Facebook. + /// Once set, this parameter is attached to installs, opens and events until cleared or the app restarts. + /// See Facebook's documentation for details on valid parameters + void addFacebookPartnerParameter(String key, String value) { + throw UnimplementedError( + 'addFacebookPartnerParameter has not been implemented'); + } + + ///Clears all Partner Parameters + void clearPartnerParameters() { + throw UnimplementedError('clearPartnerParameters has not been implemented'); + } } diff --git a/lib/src/flutter_branch_sdk_web.dart b/lib/src/flutter_branch_sdk_web.dart index af7cde71..f72c98b9 100644 --- a/lib/src/flutter_branch_sdk_web.dart +++ b/lib/src/flutter_branch_sdk_web.dart @@ -447,8 +447,6 @@ class FlutterBranchSdkWeb extends FlutterBranchSdkPlatform { required BranchLinkProperties linkProperties, required Uint8List icon, required String title}) { - //throw UnsupportedError( - // 'shareWithLPLinkMetadata() Not available in Branch JS SDK'); showShareSheet( buo: buo, linkProperties: linkProperties, messageText: title); } @@ -459,6 +457,36 @@ class FlutterBranchSdkWeb extends FlutterBranchSdkPlatform { js.context.callMethod('open', [url, '_self']); } + /// Add a Partner Parameter for Facebook. + /// Once set, this parameter is attached to installs, opens and events until cleared or the app restarts. + /// See Facebook's documentation for details on valid parameters + @override + void addFacebookPartnerParameter(String key, String value) { + throw UnsupportedError( + 'addFacebookPartnerParameter() Not available in Branch JS SDK'); + } + + /// Clears all Partner Parameters + @override + void clearPartnerParameters() { + throw UnsupportedError( + 'clearPartnerParameters() Not available in Branch JS SDK'); + } + + /// Add the pre-install campaign analytics + @override + void setPreinstallCampaign(String value) { + throw UnsupportedError( + 'setPreinstallCampaign() Not available in Branch JS SDK'); + } + + /// Add the pre-install campaign analytics + @override + void setPreinstallPartner(String value) { + throw UnsupportedError( + 'setPreinstallPartner() Not available in Branch JS SDK'); + } + void close() { _initSessionStream.close(); } diff --git a/pubspec.yaml b/pubspec.yaml index d1748194..7c9672ae 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_branch_sdk description: Flutter Plugin for create deep link using Brach SDK (https://branch.io). This plugin provides a cross-platform (iOS, Android, Web). -version: 6.3.0 +version: 6.4.0 homepage: https://github.com/RodrigoSMarques/flutter_branch_sdk environment: From ae205d39950ebe9f7eabd2295d9276a459f20106 Mon Sep 17 00:00:00 2001 From: Rodrigo de Souza Marques Date: Thu, 1 Dec 2022 09:24:52 -0300 Subject: [PATCH 2/4] Version 6.4 Documentation update and version --- CHANGELOG.md | 4 ++++ README.md | 2 +- .../flutter_branch_sdk/FlutterBranchSdkInit.java | 2 +- example/ios/Podfile.lock | 10 +++++----- example/pubspec.lock | 2 +- ios/Classes/SwiftFlutterBranchSdkPlugin.swift | 2 +- ios/flutter_branch_sdk.podspec | 2 +- lib/src/flutter_branch_sdk_method_channel.dart | 2 ++ 8 files changed, 16 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f03e454d..69d4475f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - `clearPartnerParameter` - Clears all Partner Parameters - `setPreinstallCampaign` - [Add the pre-install campaign analytics](https://help.branch.io/developers-hub/docs/pre-install-analytics) - `setPreinstallPartner` - [Add the pre-install campaign analytics](https://help.branch.io/developers-hub/docs/pre-install-analytics) +* Updated Native `iOS` SDK: + * iOS Native SDK Update 1.45.0 - [iOS Version History](https://github.com/BranchMetrics/ios-branch-deep-linking-attribution/releases) + + > Note: _Requires Xcode 14+_ ## 6.3.0 * New Method `handleDeepLink` diff --git a/README.md b/README.md index f75a77e5..e2712a35 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Branch.io helps mobile apps grow with deep links that power referral systems, sh Supports Android, iOS and Web. * Android - Branch SDK Version >= 5.2.+ [Android Version History](https://github.com/BranchMetrics/android-branch-deep-linking-attribution/releases) -* iOS - Branch SDK Version >= 1.44.+ [iOS Version History](https://github.com/BranchMetrics/ios-branch-deep-linking-attribution/releases) +* iOS - Branch SDK Version >= 1.45.+ [iOS Version History](https://github.com/BranchMetrics/ios-branch-deep-linking-attribution/releases) Implemented functions in plugin: diff --git a/android/src/main/java/br/com/rsmarques/flutter_branch_sdk/FlutterBranchSdkInit.java b/android/src/main/java/br/com/rsmarques/flutter_branch_sdk/FlutterBranchSdkInit.java index 6f09d870..281d34a7 100644 --- a/android/src/main/java/br/com/rsmarques/flutter_branch_sdk/FlutterBranchSdkInit.java +++ b/android/src/main/java/br/com/rsmarques/flutter_branch_sdk/FlutterBranchSdkInit.java @@ -8,7 +8,7 @@ public class FlutterBranchSdkInit { private static final String DEBUG_NAME = "FlutterBranchSDK"; private static final String PLUGIN_NAME = "Flutter"; - private static final String PLUGIN_VERSION = "6.3.0"; + private static final String PLUGIN_VERSION = "6.4.0"; public static void init(Context context) { ApplicationInfoHelper applicationInfoHelper = new ApplicationInfoHelper(context); diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index 34625716..6a0a482f 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -1,8 +1,8 @@ PODS: - - Branch (1.43.1) + - Branch (1.45.0) - Flutter (1.0.0) - - flutter_branch_sdk (3.0.0): - - Branch (~> 1.43.0) + - flutter_branch_sdk (6.4.0): + - Branch (~> 1.45.0) - Flutter DEPENDENCIES: @@ -20,9 +20,9 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/flutter_branch_sdk/ios" SPEC CHECKSUMS: - Branch: b5b57fc2e6f098916fd2ea26c9b66f52ffe7e293 + Branch: ef0aa28182506c63a50618a0862f63a0f7b3fe9d Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 - flutter_branch_sdk: dcf38505c8dcb3249841e2acaf323f4a39f30e2b + flutter_branch_sdk: 71c67c3436adb82d62a817a906f6eaf52ec0e176 PODFILE CHECKSUM: ef19549a9bc3046e7bb7d2fab4d021637c0c58a3 diff --git a/example/pubspec.lock b/example/pubspec.lock index 443b456e..13a7b9fe 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -61,7 +61,7 @@ packages: path: ".." relative: true source: path - version: "6.3.0" + version: "6.4.0" flutter_lints: dependency: "direct dev" description: diff --git a/ios/Classes/SwiftFlutterBranchSdkPlugin.swift b/ios/Classes/SwiftFlutterBranchSdkPlugin.swift index 235cdca7..373f6e89 100644 --- a/ios/Classes/SwiftFlutterBranchSdkPlugin.swift +++ b/ios/Classes/SwiftFlutterBranchSdkPlugin.swift @@ -10,7 +10,7 @@ let MESSAGE_CHANNEL = "flutter_branch_sdk/message"; let EVENT_CHANNEL = "flutter_branch_sdk/event"; let ERROR_CODE = "FLUTTER_BRANCH_SDK_ERROR"; let PLUGIN_NAME = "Flutter"; -let PLUGIN_VERSION = "6.3.0" +let PLUGIN_VERSION = "6.4.0" public class SwiftFlutterBranchSdkPlugin: NSObject, FlutterPlugin, FlutterStreamHandler { var eventSink: FlutterEventSink? diff --git a/ios/flutter_branch_sdk.podspec b/ios/flutter_branch_sdk.podspec index 7cf03b36..dc56d3a1 100644 --- a/ios/flutter_branch_sdk.podspec +++ b/ios/flutter_branch_sdk.podspec @@ -15,7 +15,7 @@ Flutter Plugin for create deep link using Brach SDK (https://branch.io). This pl s.source = { :path => '.' } s.source_files = 'Classes/**/*' s.dependency 'Flutter' - s.dependency 'Branch', '~> 1.43.0' + s.dependency 'Branch', '~> 1.45.0' s.platform = :ios, '9.0' # Flutter.framework does not contain a i386 slice. diff --git a/lib/src/flutter_branch_sdk_method_channel.dart b/lib/src/flutter_branch_sdk_method_channel.dart index 5b524c93..917e747f 100644 --- a/lib/src/flutter_branch_sdk_method_channel.dart +++ b/lib/src/flutter_branch_sdk_method_channel.dart @@ -1,5 +1,7 @@ import 'dart:io'; +//import 'dart:typed_data'; + import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart'; From 9293a7c8c6c75cf2142bd663b761d104e9b535a1 Mon Sep 17 00:00:00 2001 From: Rodrigo de Souza Marques Date: Sat, 3 Dec 2022 23:14:12 -0300 Subject: [PATCH 3/4] Adjusts on branch startup and log / Changelog update --- CHANGELOG.md | 6 +++-- .../FlutterBranchSdkPlugin.java | 27 ++++++++++--------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 69d4475f..085f8b8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,15 @@ ## 6.4.0 +* Fix issue #193: `Flutter app won't get notified about the quick link event if the app is at foreground on Android devices` + * New Methods: - `addFacebookPartnerParameter` - See [documentation](https://help.branch.io/developers-hub/docs/pass-hashed-information-for-facebook-advanced-matching) on partner parameters for details. - `clearPartnerParameter` - Clears all Partner Parameters - `setPreinstallCampaign` - [Add the pre-install campaign analytics](https://help.branch.io/developers-hub/docs/pre-install-analytics) - `setPreinstallPartner` - [Add the pre-install campaign analytics](https://help.branch.io/developers-hub/docs/pre-install-analytics) * Updated Native `iOS` SDK: - * iOS Native SDK Update 1.45.0 - [iOS Version History](https://github.com/BranchMetrics/ios-branch-deep-linking-attribution/releases) + * iOS Native SDK Update 1.45.0 - [iOS Version History](https://github.com/BranchMetrics/ios-branch-deep-linking-attribution/releases) - > Note: _Requires Xcode 14+_ + > Note: _Requires Xcode 14+_ ## 6.3.0 * New Method `handleDeepLink` diff --git a/android/src/main/java/br/com/rsmarques/flutter_branch_sdk/FlutterBranchSdkPlugin.java b/android/src/main/java/br/com/rsmarques/flutter_branch_sdk/FlutterBranchSdkPlugin.java index aabc49c1..6614336d 100644 --- a/android/src/main/java/br/com/rsmarques/flutter_branch_sdk/FlutterBranchSdkPlugin.java +++ b/android/src/main/java/br/com/rsmarques/flutter_branch_sdk/FlutterBranchSdkPlugin.java @@ -93,7 +93,7 @@ private void setActivity(Activity activity) { activity.getApplication().registerActivityLifecycleCallbacks(this); if (this.activity != null && FlutterFragmentActivity.class.isAssignableFrom(activity.getClass())) { - Branch.sessionBuilder(activity).withCallback(branchReferralInitListener).withData(activity.getIntent() != null ? activity.getIntent().getData() : null).init(); + Branch.sessionBuilder(activity).withCallback(branchReferralInitListener).withData(activity.getIntent().getData()).init(); } } @@ -176,7 +176,7 @@ public void onActivityCreated(Activity activity, Bundle bundle) { @Override public void onActivityStarted(Activity activity) { LogUtils.debug(DEBUG_NAME, "onActivityStarted call"); - Branch.sessionBuilder(activity).withCallback(branchReferralInitListener).withData(activity.getIntent() != null ? activity.getIntent().getData() : null).init(); + Branch.sessionBuilder(activity).withCallback(branchReferralInitListener).withData(activity.getIntent().getData()).init(); } @Override @@ -212,17 +212,19 @@ public void onActivityDestroyed(Activity activity) { @Override public boolean onNewIntent(Intent intent) { LogUtils.debug(DEBUG_NAME, "onNewIntent call"); - if (this.activity != null) { - this.activity.setIntent(intent); - - if (intent != null && - intent.hasExtra("branch_force_new_session") && - intent.getBooleanExtra("branch_force_new_session", false)) { - Branch.sessionBuilder(this.activity).withCallback(branchReferralInitListener).reInit(); - } - return true; + if (this.activity == null) { + return false; + } + if (intent == null) { + return false; + } + Intent newIntent = intent; + if (!intent.hasExtra("branch_force_new_session")) { + newIntent.putExtra("branch_force_new_session",true); } - return false; + this.activity.setIntent(newIntent); + Branch.sessionBuilder(this.activity).withCallback(branchReferralInitListener).reInit(); + return true; } /** @@ -342,6 +344,7 @@ public void onInitFinished(JSONObject params, BranchError error) { } } else { if (error.getErrorCode() == BranchError.ERR_BRANCH_ALREADY_INITIALIZED || error.getErrorCode() == BranchError.ERR_IMPROPER_REINITIALIZATION) { + LogUtils.debug(DEBUG_NAME, "BranchReferralInitListener - warning: " + error); return; } LogUtils.debug(DEBUG_NAME, "BranchReferralInitListener - error: " + error); From 78afc2543f9d01c480bf56d1e90d5be1af274697 Mon Sep 17 00:00:00 2001 From: Rodrigo de Souza Marques Date: Sat, 3 Dec 2022 23:20:49 -0300 Subject: [PATCH 4/4] Documentation flutter_branch_sdk --- lib/flutter_branch_sdk.dart | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/flutter_branch_sdk.dart b/lib/flutter_branch_sdk.dart index d8282e4e..1e7f3260 100644 --- a/lib/flutter_branch_sdk.dart +++ b/lib/flutter_branch_sdk.dart @@ -1,3 +1,8 @@ +/// This is a Flutter plugin that implemented Branch SDK - https://branch.io/ +/// Branch.io helps mobile apps grow with deep links that power referral systems, +/// sharing links and invites with full attribution and analytics. +/// Supports Android, iOS and Web. + library flutter_branch_sdk; import 'dart:typed_data';