From 63ffabcc864a4ca82b1784a2463a872e857ae738 Mon Sep 17 00:00:00 2001
From: Zohaib Iqbal Kambrani <>
Date: Tue, 14 Dec 2021 10:20:21 +0300
Subject: [PATCH] no message
---
android/app/agconnect-services.json | 66 +-
android/app/build.gradle | 12 +-
android/app/proguard-rules.pro | 25 +-
android/app/src/main/AndroidManifest.xml | 31 +
.../CustomFlutterHmsMessageService.java | 56 ++
android/build.gradle | 5 +-
.../gradle/wrapper/gradle-wrapper.properties | 6 +-
ios/Podfile | 87 +-
ios/Podfile.lock | 824 +++++-------------
.../contents.xcworkspacedata | 2 +-
ios/Runner/AppDelegate.swift | 4 +-
ios/Runner/Helper/OpenTokPlatformBridge.swift | 85 +-
ios/Runner/OpenTok/OpenTok.swift | 317 +++----
lib/main.dart | 8 +-
.../conference/web_rtc/call_home_page.dart | 277 ++----
.../conference/web_rtc/call_home_page_.dart | 186 ++++
.../web_rtc/widgets/cam_view_widget.dart | 34 +-
lib/pages/landing/landing_page.dart | 236 +----
lib/pages/livecare/incoming_call.dart | 116 +--
lib/uitl/app_shared_preferences.dart | 2 +-
lib/uitl/navigation_service.dart | 13 +-
lib/uitl/push-notification-handler.dart | 279 ++++++
pubspec.yaml | 7 +-
23 files changed, 1191 insertions(+), 1487 deletions(-)
create mode 100644 android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/bkp_files/CustomFlutterHmsMessageService.java
create mode 100644 lib/pages/conference/web_rtc/call_home_page_.dart
create mode 100644 lib/uitl/push-notification-handler.dart
diff --git a/android/app/agconnect-services.json b/android/app/agconnect-services.json
index cfdaf83b..91aad2c7 100644
--- a/android/app/agconnect-services.json
+++ b/android/app/agconnect-services.json
@@ -1,6 +1,21 @@
{
+ "agcgw":{
+ "backurl":"connect-drcn.hispace.hicloud.com",
+ "url":"connect-drcn.dbankcloud.cn",
+ "websocketbackurl":"connect-ws-drcn.hispace.dbankcloud.com",
+ "websocketurl":"connect-ws-drcn.hispace.dbankcloud.cn"
+ },
+ "agcgw_all":{
+ "CN":"connect-drcn.dbankcloud.cn",
+ "CN_back":"connect-drcn.hispace.hicloud.com",
+ "DE":"connect-dre.dbankcloud.cn",
+ "DE_back":"connect-dre.hispace.hicloud.com",
+ "RU":"connect-drru.dbankcloud.cn",
+ "RU_back":"connect-drru.hispace.hicloud.com",
+ "SG":"connect-dra.dbankcloud.cn",
+ "SG_back":"connect-dra.hispace.hicloud.com"
+ },
"client":{
- "appType":"1",
"cp_id":"2640966000002322881",
"product_id":"736430079244816567",
"client_id":"563735388191982656",
@@ -10,5 +25,50 @@
"api_key":"CgB6e3x9DJzMgRCmnT6dyUEkp6UsIfddb6l3w0ZEXzeiRMHEFi3400Z5fJ5qaHneU0OrAI/JRpk+DMGVs3QpUxlI",
"package_name":"com.ejada.hmg"
},
- "configuration_version":"1.0"
-}
\ No newline at end of file
+ "oauth_client":{
+ "client_id":"102857389",
+ "client_type":1
+ },
+ "app_info":{
+ "app_id":"102857389",
+ "package_name":"com.ejada.hmg"
+ },
+ "service":{
+ "analytics":{
+ "collector_url":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn",
+ "collector_url_ru":"datacollector-drru.dt.hicloud.com,datacollector-drru.dt.dbankcloud.cn",
+ "collector_url_sg":"datacollector-dra.dt.hicloud.com,datacollector-dra.dt.dbankcloud.cn",
+ "collector_url_de":"datacollector-dre.dt.hicloud.com,datacollector-dre.dt.dbankcloud.cn",
+ "collector_url_cn":"datacollector-drcn.dt.hicloud.com,datacollector-drcn.dt.dbankcloud.cn",
+ "resource_id":"p1",
+ "channel_id":""
+ },
+ "search":{
+ "url":"https://search-drcn.cloud.huawei.com"
+ },
+ "cloudstorage":{
+ "storage_url":"https://agc-storage-drcn.platform.dbankcloud.cn"
+ },
+ "ml":{
+ "mlservice_url":"ml-api-drcn.ai.dbankcloud.com,ml-api-drcn.ai.dbankcloud.cn"
+ }
+ },
+ "region":"CN",
+ "configuration_version":"3.0",
+ "appInfos":[
+ {
+ "package_name":"com.ejada.hmg",
+ "client":{
+ "app_id":"102857389"
+ },
+ "app_info":{
+ "package_name":"com.ejada.hmg",
+ "app_id":"102857389"
+ },
+ "oauth_client":{
+ "client_type":1,
+ "client_id":"102857389"
+ }
+ }
+ ]
+}
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 25230849..79a27897 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -67,6 +67,7 @@ android {
}
release {
signingConfig signingConfigs.config
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
staging {
// Specifies a sorted list of fallback build types that the
@@ -77,6 +78,15 @@ android {
matchingFallbacks = ['debug', 'qa', 'release']
}
}
+
+ packagingOptions {
+ exclude 'META-INF/proguard/androidx-annotations.pro'
+ }
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
}
flutter {
@@ -112,7 +122,7 @@ dependencies {
implementation "com.opentok.android:opentok-android-sdk:2.19.1"
- compile 'com.facebook.stetho:stetho:1.5.1'
+ implementation 'com.facebook.stetho:stetho:1.5.1'
implementation 'com.facebook.stetho:stetho-urlconnection:1.5.1'
diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro
index 4ace459d..cfab1fd6 100644
--- a/android/app/proguard-rules.pro
+++ b/android/app/proguard-rules.pro
@@ -1,4 +1,27 @@
-keep class tvi.webrtc.** { *; }
-keep class com.twilio.video.** { *; }
-keep class com.twilio.common.** { *; }
--keepattributes InnerClasses
\ No newline at end of file
+-keepattributes InnerClasses
+
+-keep class com.ejada.** { *; }
+-keep class org.webrtc.** { *; }
+
+-ignorewarnings
+-keepattributes *Annotation*
+-keepattributes Exceptions
+-keepattributes InnerClasses
+-keepattributes Signature
+-keep class com.hianalytics.android.**{*;}
+-keep class com.huawei.updatesdk.**{*;}
+-keep class com.huawei.hms.**{*;}
+
+## Flutter wrapper
+-keep class io.flutter.app.** { *; }
+-keep class io.flutter.plugin.** { *; }
+-keep class io.flutter.util.** { *; }
+-keep class io.flutter.view.** { *; }
+-keep class io.flutter.** { *; }
+-keep class io.flutter.plugins.** { *; }
+-dontwarn io.flutter.embedding.**
+-keep class com.huawei.hms.flutter.** { *; }
+-repackageclasses
\ No newline at end of file
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 8aa7ad73..07242edb 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -46,6 +46,8 @@
android:showOnLockScreen="true"
android:screenOrientation="sensorPortrait"
android:label="Dr. Alhabib">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/bkp_files/CustomFlutterHmsMessageService.java b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/bkp_files/CustomFlutterHmsMessageService.java
new file mode 100644
index 00000000..c96a60af
--- /dev/null
+++ b/android/app/src/main/kotlin/com/cloud/diplomaticquarterapp/bkp_files/CustomFlutterHmsMessageService.java
@@ -0,0 +1,56 @@
+/*
+* ---------------
+* Note: Todo
+* ---------------
+* Need to be place in huawei_push (package com.huawei.hms.flutter.push.hms) and define in huawei_push manifest.xml
+* */
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.util.Log;
+
+import com.huawei.hms.flutter.push.hms.FlutterHmsMessageService;
+import com.huawei.hms.flutter.push.utils.ApplicationUtils;
+
+import org.json.JSONObject;
+
+//package com.huawei.hms.flutter.push.hms
+//
+//
+//import android.content.Context;
+//import android.content.Intent;
+//import android.content.SharedPreferences;
+//
+//import com.huawei.hms.flutter.push.hms.FlutterHmsMessageService;
+//import com.huawei.hms.flutter.push.utils.ApplicationUtils;
+//import com.huawei.hms.push.RemoteMessage;
+//
+//import org.json.JSONObject;
+//
+//public class CustomFlutterHmsMessageService extends FlutterHmsMessageService {
+// @Override
+// public void onMessageReceived(RemoteMessage remoteMessage) {
+// super.onMessageReceived(remoteMessage);
+// try {
+// String jsonStr = remoteMessage.getData();
+// JSONObject json_data = new JSONObject(jsonStr);
+// JSONObject json_data_data = new JSONObject(json_data.getString("data"));
+// if(json_data_data.getString("is_call").equalsIgnoreCase("true")){
+// boolean isApplicationInForeground = ApplicationUtils.isApplicationInForeground(this);
+// if(!isApplicationInForeground){
+// SharedPreferences preferences = getSharedPreferences("FlutterSharedPreferences", Context.MODE_PRIVATE);
+// preferences.edit().putString("flutter.call_data", json_data.getString("data")).apply();
+//
+// Intent intent = getPackageManager().getLaunchIntentForPackage(getPackageName());
+// intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
+// startActivity(intent);
+// Log.v("onMessageReceived", "startActivity(intent) called");
+// }
+// }
+//
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// }
+//}
diff --git a/android/build.gradle b/android/build.gradle
index ecb1ed70..b33d5f1b 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -11,10 +11,11 @@ buildscript {
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.5.4'
+ classpath 'com.android.tools.build:gradle:7.0.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.8'
- classpath 'com.huawei.agconnect:agcp:1.4.2.301'
+// classpath 'com.huawei.agconnect:agcp:1.4.2.301'
+ classpath 'com.huawei.agconnect:agcp:1.5.2.300'
}
}
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
index 6fdb0e44..09db0fed 100644
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Wed Jul 14 15:55:18 AST 2021
+#Sun Dec 12 12:44:08 AST 2021
distributionBase=GRADLE_USER_HOME
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip
+zipStoreBase=GRADLE_USER_HOME
diff --git a/ios/Podfile b/ios/Podfile
index 46c98373..1e8c3c90 100644
--- a/ios/Podfile
+++ b/ios/Podfile
@@ -1,9 +1,8 @@
# Uncomment this line to define a global platform for your project
-# platform :ios, '10.0'
+# platform :ios, '9.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
-$FirebaseAnalyticsWithoutAdIdSupport = true
project 'Runner', {
'Debug' => :debug,
@@ -11,86 +10,32 @@ project 'Runner', {
'Release' => :release,
}
-# pod 'FBSDKCoreKit'
-# pod 'FBSDKLoginKit'
-
-def parse_KV_file(file, separator='=')
- file_abs_path = File.expand_path(file)
- if !File.exists? file_abs_path
- return [];
+def flutter_root
+ generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
+ unless File.exist?(generated_xcode_build_settings_path)
+ raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
end
- generated_key_values = {}
- skip_line_start_symbols = ["#", "/"]
- File.foreach(file_abs_path) do |line|
- next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
- plugin = line.split(pattern=separator)
- if plugin.length == 2
- podname = plugin[0].strip()
- path = plugin[1].strip()
- podpath = File.expand_path("#{path}", file_abs_path)
- generated_key_values[podname] = podpath
- else
- puts "Invalid plugin specification: #{line}"
- end
+
+ File.foreach(generated_xcode_build_settings_path) do |line|
+ matches = line.match(/FLUTTER_ROOT\=(.*)/)
+ return matches[1].strip if matches
end
- generated_key_values
+ raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
end
+require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
+
+flutter_ios_podfile_setup
+
target 'Runner' do
use_frameworks!
use_modular_headers!
- # Native Pods
- pod 'NVActivityIndicatorView'
- pod 'OpenTok'
-
-
- # Flutter Pod
- copied_flutter_dir = File.join(__dir__, 'Flutter')
- copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework')
- copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec')
- unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path)
- # Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet.
- # That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration.
- # CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist.
-
- generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig')
- unless File.exist?(generated_xcode_build_settings_path)
- raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first"
- end
- generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path)
- cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR'];
-
- unless File.exist?(copied_framework_path)
- FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir)
- end
- unless File.exist?(copied_podspec_path)
- FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir)
- end
- end
-
- # Keep pod path relative so it can be checked into Podfile.lock.
- pod 'Flutter', :path => 'Flutter'
-
- # Plugin Pods
-
- # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
- # referring to absolute paths on developers' machines.
- system('rm -rf .symlinks')
- system('mkdir -p .symlinks/plugins')
- plugin_pods = parse_KV_file('../.flutter-plugins')
- plugin_pods.each do |name, path|
- symlink = File.join('.symlinks', 'plugins', name)
- File.symlink(path, symlink)
- pod name, :path => File.join(symlink, 'ios')
- end
+ flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end
post_install do |installer|
installer.pods_project.targets.each do |target|
- target.build_configurations.each do |config|
- config.build_settings['ENABLE_BITCODE'] = 'NO'
- end
+ flutter_additional_ios_build_settings(target)
end
end
-
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index 565b2db9..169a7b58 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -1,246 +1,16 @@
PODS:
- - abseil/algorithm (0.20200225.0):
- - abseil/algorithm/algorithm (= 0.20200225.0)
- - abseil/algorithm/container (= 0.20200225.0)
- - abseil/algorithm/algorithm (0.20200225.0):
- - abseil/base/config
- - abseil/algorithm/container (0.20200225.0):
- - abseil/algorithm/algorithm
- - abseil/base/core_headers
- - abseil/meta/type_traits
- - abseil/base (0.20200225.0):
- - abseil/base/atomic_hook (= 0.20200225.0)
- - abseil/base/base (= 0.20200225.0)
- - abseil/base/base_internal (= 0.20200225.0)
- - abseil/base/bits (= 0.20200225.0)
- - abseil/base/config (= 0.20200225.0)
- - abseil/base/core_headers (= 0.20200225.0)
- - abseil/base/dynamic_annotations (= 0.20200225.0)
- - abseil/base/endian (= 0.20200225.0)
- - abseil/base/errno_saver (= 0.20200225.0)
- - abseil/base/exponential_biased (= 0.20200225.0)
- - abseil/base/log_severity (= 0.20200225.0)
- - abseil/base/malloc_internal (= 0.20200225.0)
- - abseil/base/periodic_sampler (= 0.20200225.0)
- - abseil/base/pretty_function (= 0.20200225.0)
- - abseil/base/raw_logging_internal (= 0.20200225.0)
- - abseil/base/spinlock_wait (= 0.20200225.0)
- - abseil/base/throw_delegate (= 0.20200225.0)
- - abseil/base/atomic_hook (0.20200225.0):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/base (0.20200225.0):
- - abseil/base/atomic_hook
- - abseil/base/base_internal
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/dynamic_annotations
- - abseil/base/log_severity
- - abseil/base/raw_logging_internal
- - abseil/base/spinlock_wait
- - abseil/meta/type_traits
- - abseil/base/base_internal (0.20200225.0):
- - abseil/base/config
- - abseil/meta/type_traits
- - abseil/base/bits (0.20200225.0):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/config (0.20200225.0)
- - abseil/base/core_headers (0.20200225.0):
- - abseil/base/config
- - abseil/base/dynamic_annotations (0.20200225.0)
- - abseil/base/endian (0.20200225.0):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/errno_saver (0.20200225.0):
- - abseil/base/config
- - abseil/base/exponential_biased (0.20200225.0):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/log_severity (0.20200225.0):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/malloc_internal (0.20200225.0):
- - abseil/base/base
- - abseil/base/base_internal
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/dynamic_annotations
- - abseil/base/raw_logging_internal
- - abseil/base/periodic_sampler (0.20200225.0):
- - abseil/base/core_headers
- - abseil/base/exponential_biased
- - abseil/base/pretty_function (0.20200225.0)
- - abseil/base/raw_logging_internal (0.20200225.0):
- - abseil/base/atomic_hook
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/log_severity
- - abseil/base/spinlock_wait (0.20200225.0):
- - abseil/base/base_internal
- - abseil/base/core_headers
- - abseil/base/errno_saver
- - abseil/base/throw_delegate (0.20200225.0):
- - abseil/base/config
- - abseil/base/raw_logging_internal
- - abseil/container/compressed_tuple (0.20200225.0):
- - abseil/utility/utility
- - abseil/container/inlined_vector (0.20200225.0):
- - abseil/algorithm/algorithm
- - abseil/base/core_headers
- - abseil/base/throw_delegate
- - abseil/container/inlined_vector_internal
- - abseil/memory/memory
- - abseil/container/inlined_vector_internal (0.20200225.0):
- - abseil/base/core_headers
- - abseil/container/compressed_tuple
- - abseil/memory/memory
- - abseil/meta/type_traits
- - abseil/types/span
- - abseil/memory (0.20200225.0):
- - abseil/memory/memory (= 0.20200225.0)
- - abseil/memory/memory (0.20200225.0):
- - abseil/base/core_headers
- - abseil/meta/type_traits
- - abseil/meta (0.20200225.0):
- - abseil/meta/type_traits (= 0.20200225.0)
- - abseil/meta/type_traits (0.20200225.0):
- - abseil/base/config
- - abseil/numeric/int128 (0.20200225.0):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/strings/internal (0.20200225.0):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/endian
- - abseil/base/raw_logging_internal
- - abseil/meta/type_traits
- - abseil/strings/str_format (0.20200225.0):
- - abseil/strings/str_format_internal
- - abseil/strings/str_format_internal (0.20200225.0):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/meta/type_traits
- - abseil/numeric/int128
- - abseil/strings/strings
- - abseil/types/span
- - abseil/strings/strings (0.20200225.0):
- - abseil/base/base
- - abseil/base/bits
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/base/endian
- - abseil/base/raw_logging_internal
- - abseil/base/throw_delegate
- - abseil/memory/memory
- - abseil/meta/type_traits
- - abseil/numeric/int128
- - abseil/strings/internal
- - abseil/time (0.20200225.0):
- - abseil/time/internal (= 0.20200225.0)
- - abseil/time/time (= 0.20200225.0)
- - abseil/time/internal (0.20200225.0):
- - abseil/time/internal/cctz (= 0.20200225.0)
- - abseil/time/internal/cctz (0.20200225.0):
- - abseil/time/internal/cctz/civil_time (= 0.20200225.0)
- - abseil/time/internal/cctz/time_zone (= 0.20200225.0)
- - abseil/time/internal/cctz/civil_time (0.20200225.0):
- - abseil/base/config
- - abseil/time/internal/cctz/time_zone (0.20200225.0):
- - abseil/base/config
- - abseil/time/internal/cctz/civil_time
- - abseil/time/time (0.20200225.0):
- - abseil/base/base
- - abseil/base/core_headers
- - abseil/base/raw_logging_internal
- - abseil/numeric/int128
- - abseil/strings/strings
- - abseil/time/internal/cctz/civil_time
- - abseil/time/internal/cctz/time_zone
- - abseil/types (0.20200225.0):
- - abseil/types/any (= 0.20200225.0)
- - abseil/types/bad_any_cast (= 0.20200225.0)
- - abseil/types/bad_any_cast_impl (= 0.20200225.0)
- - abseil/types/bad_optional_access (= 0.20200225.0)
- - abseil/types/bad_variant_access (= 0.20200225.0)
- - abseil/types/compare (= 0.20200225.0)
- - abseil/types/optional (= 0.20200225.0)
- - abseil/types/span (= 0.20200225.0)
- - abseil/types/variant (= 0.20200225.0)
- - abseil/types/any (0.20200225.0):
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/meta/type_traits
- - abseil/types/bad_any_cast
- - abseil/utility/utility
- - abseil/types/bad_any_cast (0.20200225.0):
- - abseil/base/config
- - abseil/types/bad_any_cast_impl
- - abseil/types/bad_any_cast_impl (0.20200225.0):
- - abseil/base/config
- - abseil/base/raw_logging_internal
- - abseil/types/bad_optional_access (0.20200225.0):
- - abseil/base/config
- - abseil/base/raw_logging_internal
- - abseil/types/bad_variant_access (0.20200225.0):
- - abseil/base/config
- - abseil/base/raw_logging_internal
- - abseil/types/compare (0.20200225.0):
- - abseil/base/core_headers
- - abseil/meta/type_traits
- - abseil/types/optional (0.20200225.0):
- - abseil/base/base_internal
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/memory/memory
- - abseil/meta/type_traits
- - abseil/types/bad_optional_access
- - abseil/utility/utility
- - abseil/types/span (0.20200225.0):
- - abseil/algorithm/algorithm
- - abseil/base/core_headers
- - abseil/base/throw_delegate
- - abseil/meta/type_traits
- - abseil/types/variant (0.20200225.0):
- - abseil/base/base_internal
- - abseil/base/config
- - abseil/base/core_headers
- - abseil/meta/type_traits
- - abseil/types/bad_variant_access
- - abseil/utility/utility
- - abseil/utility/utility (0.20200225.0):
- - abseil/base/base_internal
- - abseil/base/config
- - abseil/meta/type_traits
- - android_intent (0.0.1):
+ - audio_session (0.0.1):
- Flutter
- barcode_scan_fix (0.0.1):
- Flutter
- MTBBarcodeScanner
- - BoringSSL-GRPC (0.0.7):
- - BoringSSL-GRPC/Implementation (= 0.0.7)
- - BoringSSL-GRPC/Interface (= 0.0.7)
- - BoringSSL-GRPC/Implementation (0.0.7):
- - BoringSSL-GRPC/Interface (= 0.0.7)
- - BoringSSL-GRPC/Interface (0.0.7)
- - cloud_firestore (0.14.4):
- - Firebase/CoreOnly (~> 6.33.0)
- - Firebase/Firestore (~> 6.33.0)
- - firebase_core
- - Flutter
- - cloud_firestore_web (0.1.0):
+ - camera (0.0.1):
- Flutter
- connectivity (0.0.1):
- Flutter
- Reachability
- - connectivity_for_web (0.1.0):
- - Flutter
- - connectivity_macos (0.0.1):
- - Flutter
- device_calendar (0.0.1):
- Flutter
- - device_info (0.0.1):
- - Flutter
- DKImagePickerController/Core (4.3.2):
- DKImagePickerController/ImageDataManager
- DKImagePickerController/Resource
@@ -275,188 +45,152 @@ PODS:
- file_picker (0.0.1):
- DKImagePickerController/PhotoGallery
- Flutter
- - file_picker_web (0.0.1):
- - Flutter
- - Firebase/Analytics (6.33.0):
+ - Firebase/Analytics (8.9.0):
- Firebase/Core
- - Firebase/Core (6.33.0):
+ - Firebase/Core (8.9.0):
- Firebase/CoreOnly
- - FirebaseAnalytics (= 6.8.3)
- - Firebase/CoreOnly (6.33.0):
- - FirebaseCore (= 6.10.3)
- - Firebase/Firestore (6.33.0):
+ - FirebaseAnalytics (~> 8.9.0)
+ - Firebase/CoreOnly (8.9.0):
+ - FirebaseCore (= 8.9.0)
+ - Firebase/Messaging (8.9.0):
- Firebase/CoreOnly
- - FirebaseFirestore (~> 1.18.0)
- - Firebase/Messaging (6.33.0):
- - Firebase/CoreOnly
- - FirebaseMessaging (~> 4.7.0)
- - firebase_analytics (6.3.0):
- - Firebase/Analytics (~> 6.33.0)
- - Firebase/CoreOnly (~> 6.33.0)
+ - FirebaseMessaging (~> 8.9.0)
+ - firebase_analytics (8.3.4):
+ - Firebase/Analytics (= 8.9.0)
- firebase_core
- Flutter
- - firebase_analytics_web (0.1.0):
- - Flutter
- - firebase_core (0.5.3):
- - Firebase/CoreOnly (~> 6.33.0)
+ - firebase_core (1.10.0):
+ - Firebase/CoreOnly (= 8.9.0)
- Flutter
- - firebase_core_web (0.1.0):
- - Flutter
- - firebase_messaging (7.0.3):
- - Firebase/CoreOnly (~> 6.33.0)
- - Firebase/Messaging (~> 6.33.0)
+ - firebase_messaging (11.1.0):
+ - Firebase/Messaging (= 8.9.0)
- firebase_core
- Flutter
- - FirebaseAnalytics (6.8.3):
- - FirebaseCore (~> 6.10)
- - FirebaseInstallations (~> 1.6)
- - GoogleAppMeasurement (= 6.8.3)
- - GoogleUtilities/AppDelegateSwizzler (~> 6.7)
- - GoogleUtilities/MethodSwizzler (~> 6.7)
- - GoogleUtilities/Network (~> 6.7)
- - "GoogleUtilities/NSData+zlib (~> 6.7)"
- - nanopb (~> 1.30906.0)
- - FirebaseCore (6.10.3):
- - FirebaseCoreDiagnostics (~> 1.6)
- - GoogleUtilities/Environment (~> 6.7)
- - GoogleUtilities/Logger (~> 6.7)
- - FirebaseCoreDiagnostics (1.7.0):
- - GoogleDataTransport (~> 7.4)
- - GoogleUtilities/Environment (~> 6.7)
- - GoogleUtilities/Logger (~> 6.7)
- - nanopb (~> 1.30906.0)
- - FirebaseFirestore (1.18.0):
- - abseil/algorithm (= 0.20200225.0)
- - abseil/base (= 0.20200225.0)
- - abseil/memory (= 0.20200225.0)
- - abseil/meta (= 0.20200225.0)
- - abseil/strings/strings (= 0.20200225.0)
- - abseil/time (= 0.20200225.0)
- - abseil/types (= 0.20200225.0)
- - FirebaseCore (~> 6.10)
- - "gRPC-C++ (~> 1.28.0)"
- - leveldb-library (~> 1.22)
- - nanopb (~> 1.30906.0)
- - FirebaseInstallations (1.7.0):
- - FirebaseCore (~> 6.10)
- - GoogleUtilities/Environment (~> 6.7)
- - GoogleUtilities/UserDefaults (~> 6.7)
- - PromisesObjC (~> 1.2)
- - FirebaseInstanceID (4.8.0):
- - FirebaseCore (~> 6.10)
- - FirebaseInstallations (~> 1.6)
- - GoogleUtilities/Environment (~> 6.7)
- - GoogleUtilities/UserDefaults (~> 6.7)
- - FirebaseMessaging (4.7.1):
- - FirebaseCore (~> 6.10)
- - FirebaseInstanceID (~> 4.7)
- - GoogleUtilities/AppDelegateSwizzler (~> 6.7)
- - GoogleUtilities/Environment (~> 6.7)
- - GoogleUtilities/Reachability (~> 6.7)
- - GoogleUtilities/UserDefaults (~> 6.7)
- - Protobuf (>= 3.9.2, ~> 3.9)
- - Flutter (1.0.0)
- - flutter_email_sender (0.0.1):
+ - FirebaseAnalytics (8.9.1):
+ - FirebaseAnalytics/AdIdSupport (= 8.9.1)
+ - FirebaseCore (~> 8.0)
+ - FirebaseInstallations (~> 8.0)
+ - GoogleUtilities/AppDelegateSwizzler (~> 7.6)
+ - GoogleUtilities/MethodSwizzler (~> 7.6)
+ - GoogleUtilities/Network (~> 7.6)
+ - "GoogleUtilities/NSData+zlib (~> 7.6)"
+ - nanopb (~> 2.30908.0)
+ - FirebaseAnalytics/AdIdSupport (8.9.1):
+ - FirebaseCore (~> 8.0)
+ - FirebaseInstallations (~> 8.0)
+ - GoogleAppMeasurement (= 8.9.1)
+ - GoogleUtilities/AppDelegateSwizzler (~> 7.6)
+ - GoogleUtilities/MethodSwizzler (~> 7.6)
+ - GoogleUtilities/Network (~> 7.6)
+ - "GoogleUtilities/NSData+zlib (~> 7.6)"
+ - nanopb (~> 2.30908.0)
+ - FirebaseCore (8.9.0):
+ - FirebaseCoreDiagnostics (~> 8.0)
+ - GoogleUtilities/Environment (~> 7.6)
+ - GoogleUtilities/Logger (~> 7.6)
+ - FirebaseCoreDiagnostics (8.10.0):
+ - GoogleDataTransport (~> 9.1)
+ - GoogleUtilities/Environment (~> 7.6)
+ - GoogleUtilities/Logger (~> 7.6)
+ - nanopb (~> 2.30908.0)
+ - FirebaseInstallations (8.10.0):
+ - FirebaseCore (~> 8.0)
+ - GoogleUtilities/Environment (~> 7.6)
+ - GoogleUtilities/UserDefaults (~> 7.6)
+ - PromisesObjC (< 3.0, >= 1.2)
+ - FirebaseMessaging (8.9.0):
+ - FirebaseCore (~> 8.0)
+ - FirebaseInstallations (~> 8.0)
+ - GoogleDataTransport (~> 9.1)
+ - GoogleUtilities/AppDelegateSwizzler (~> 7.6)
+ - GoogleUtilities/Environment (~> 7.6)
+ - GoogleUtilities/Reachability (~> 7.6)
+ - GoogleUtilities/UserDefaults (~> 7.6)
+ - nanopb (~> 2.30908.0)
+ - fit_kit (0.0.1):
- Flutter
+ - Flutter (1.0.0)
- flutter_flexible_toast (0.0.1):
- Flutter
- flutter_hms_gms_availability (0.0.1):
- Flutter
- flutter_inappwebview (0.0.1):
- Flutter
- - flutter_local_notifications (0.0.1):
+ - flutter_inappwebview/Core (= 0.0.1)
+ - OrderedSet (~> 5.0)
+ - flutter_inappwebview/Core (0.0.1):
- Flutter
- - flutter_plugin_android_lifecycle (0.0.1):
+ - OrderedSet (~> 5.0)
+ - flutter_local_notifications (0.0.1):
- Flutter
- flutter_tts (0.0.1):
- Flutter
- - flutter_webrtc (0.2.2):
+ - flutter_webrtc (0.7.1):
- Flutter
- - GoogleWebRTC (= 1.1.31999)
- Libyuv (= 1703)
+ - WebRTC-SDK (= 92.4515.11)
- FMDB (2.7.5):
- FMDB/standard (= 2.7.5)
- FMDB/standard (2.7.5)
- - geolocator (6.2.0):
+ - geolocator_apple (1.2.0):
- Flutter
- google_maps_flutter (0.0.1):
- Flutter
- - GoogleMaps (< 3.10)
- - GoogleAppMeasurement (6.8.3):
- - GoogleUtilities/AppDelegateSwizzler (~> 6.7)
- - GoogleUtilities/MethodSwizzler (~> 6.7)
- - GoogleUtilities/Network (~> 6.7)
- - "GoogleUtilities/NSData+zlib (~> 6.7)"
- - nanopb (~> 1.30906.0)
- - GoogleDataTransport (7.5.1):
- - nanopb (~> 1.30906.0)
- - GoogleMaps (3.9.0):
- - GoogleMaps/Maps (= 3.9.0)
- - GoogleMaps/Base (3.9.0)
- - GoogleMaps/Maps (3.9.0):
+ - GoogleMaps
+ - GoogleAppMeasurement (8.9.1):
+ - GoogleAppMeasurement/AdIdSupport (= 8.9.1)
+ - GoogleUtilities/AppDelegateSwizzler (~> 7.6)
+ - GoogleUtilities/MethodSwizzler (~> 7.6)
+ - GoogleUtilities/Network (~> 7.6)
+ - "GoogleUtilities/NSData+zlib (~> 7.6)"
+ - nanopb (~> 2.30908.0)
+ - GoogleAppMeasurement/AdIdSupport (8.9.1):
+ - GoogleAppMeasurement/WithoutAdIdSupport (= 8.9.1)
+ - GoogleUtilities/AppDelegateSwizzler (~> 7.6)
+ - GoogleUtilities/MethodSwizzler (~> 7.6)
+ - GoogleUtilities/Network (~> 7.6)
+ - "GoogleUtilities/NSData+zlib (~> 7.6)"
+ - nanopb (~> 2.30908.0)
+ - GoogleAppMeasurement/WithoutAdIdSupport (8.9.1):
+ - GoogleUtilities/AppDelegateSwizzler (~> 7.6)
+ - GoogleUtilities/MethodSwizzler (~> 7.6)
+ - GoogleUtilities/Network (~> 7.6)
+ - "GoogleUtilities/NSData+zlib (~> 7.6)"
+ - nanopb (~> 2.30908.0)
+ - GoogleDataTransport (9.1.2):
+ - GoogleUtilities/Environment (~> 7.2)
+ - nanopb (~> 2.30908.0)
+ - PromisesObjC (< 3.0, >= 1.2)
+ - GoogleMaps (5.2.0):
+ - GoogleMaps/Maps (= 5.2.0)
+ - GoogleMaps/Base (5.2.0)
+ - GoogleMaps/Maps (5.2.0):
- GoogleMaps/Base
- - GoogleUtilities/AppDelegateSwizzler (6.7.2):
+ - GoogleUtilities/AppDelegateSwizzler (7.6.0):
- GoogleUtilities/Environment
- GoogleUtilities/Logger
- GoogleUtilities/Network
- - GoogleUtilities/Environment (6.7.2):
- - PromisesObjC (~> 1.2)
- - GoogleUtilities/Logger (6.7.2):
+ - GoogleUtilities/Environment (7.6.0):
+ - PromisesObjC (< 3.0, >= 1.2)
+ - GoogleUtilities/Logger (7.6.0):
- GoogleUtilities/Environment
- - GoogleUtilities/MethodSwizzler (6.7.2):
+ - GoogleUtilities/MethodSwizzler (7.6.0):
- GoogleUtilities/Logger
- - GoogleUtilities/Network (6.7.2):
+ - GoogleUtilities/Network (7.6.0):
- GoogleUtilities/Logger
- "GoogleUtilities/NSData+zlib"
- GoogleUtilities/Reachability
- - "GoogleUtilities/NSData+zlib (6.7.2)"
- - GoogleUtilities/Reachability (6.7.2):
+ - "GoogleUtilities/NSData+zlib (7.6.0)"
+ - GoogleUtilities/Reachability (7.6.0):
- GoogleUtilities/Logger
- - GoogleUtilities/UserDefaults (6.7.2):
+ - GoogleUtilities/UserDefaults (7.6.0):
- GoogleUtilities/Logger
- - GoogleWebRTC (1.1.31999)
- - "gRPC-C++ (1.28.2)":
- - "gRPC-C++/Implementation (= 1.28.2)"
- - "gRPC-C++/Interface (= 1.28.2)"
- - "gRPC-C++/Implementation (1.28.2)":
- - abseil/container/inlined_vector (= 0.20200225.0)
- - abseil/memory/memory (= 0.20200225.0)
- - abseil/strings/str_format (= 0.20200225.0)
- - abseil/strings/strings (= 0.20200225.0)
- - abseil/types/optional (= 0.20200225.0)
- - "gRPC-C++/Interface (= 1.28.2)"
- - gRPC-Core (= 1.28.2)
- - "gRPC-C++/Interface (1.28.2)"
- - gRPC-Core (1.28.2):
- - gRPC-Core/Implementation (= 1.28.2)
- - gRPC-Core/Interface (= 1.28.2)
- - gRPC-Core/Implementation (1.28.2):
- - abseil/container/inlined_vector (= 0.20200225.0)
- - abseil/memory/memory (= 0.20200225.0)
- - abseil/strings/str_format (= 0.20200225.0)
- - abseil/strings/strings (= 0.20200225.0)
- - abseil/types/optional (= 0.20200225.0)
- - BoringSSL-GRPC (= 0.0.7)
- - gRPC-Core/Interface (= 1.28.2)
- - gRPC-Core/Interface (1.28.2)
- - hexcolor (0.0.1):
- - Flutter
- - "huawei_location (5.0.0+301)":
- - Flutter
- - "huawei_map (5.0.3+303)":
- - Flutter
- - image_cropper (0.0.3):
- - Flutter
- - TOCropViewController (~> 2.5.4)
- image_picker (0.0.1):
- Flutter
- in_app_review (0.2.0):
- Flutter
- - in_app_update (0.0.1):
- - Flutter
- just_audio (0.0.1):
- Flutter
- - leveldb-library (1.22)
- Libyuv (1703)
- local_auth (0.0.1):
- Flutter
@@ -464,53 +198,35 @@ PODS:
- Flutter
- manage_calendar_events (0.0.1):
- Flutter
- - map_launcher (0.0.1):
- - Flutter
- maps_launcher (0.0.1):
- Flutter
- MTBBarcodeScanner (5.0.11)
- - nanopb (1.30906.0):
- - nanopb/decode (= 1.30906.0)
- - nanopb/encode (= 1.30906.0)
- - nanopb/decode (1.30906.0)
- - nanopb/encode (1.30906.0)
+ - nanopb (2.30908.0):
+ - nanopb/decode (= 2.30908.0)
+ - nanopb/encode (= 2.30908.0)
+ - nanopb/decode (2.30908.0)
+ - nanopb/encode (2.30908.0)
- native_device_orientation (0.0.1):
- Flutter
- nfc_in_flutter (1.0.0):
- Flutter
- - NVActivityIndicatorView (5.1.1):
- - NVActivityIndicatorView/Base (= 5.1.1)
- - NVActivityIndicatorView/Base (5.1.1)
- - OpenTok (2.20.0)
- - path_provider (0.0.1):
- - Flutter
- - path_provider_linux (0.0.1):
+ - OrderedSet (5.0.0)
+ - package_info_plus (0.4.5):
- Flutter
- - path_provider_macos (0.0.1):
- - Flutter
- - path_provider_windows (0.0.1):
+ - path_provider_ios (0.0.1):
- Flutter
- "permission_handler (5.1.0+2)":
- Flutter
- - PromisesObjC (1.2.11)
- - Protobuf (3.13.0)
+ - PromisesObjC (2.0.0)
- Reachability (3.2)
- screen (0.0.1):
- Flutter
- - SDWebImage (5.10.4):
- - SDWebImage/Core (= 5.10.4)
- - SDWebImage/Core (5.10.4)
- - shared_preferences (0.0.1):
- - Flutter
- - shared_preferences_linux (0.0.1):
- - Flutter
- - shared_preferences_macos (0.0.1):
- - Flutter
- - shared_preferences_web (0.0.1):
- - Flutter
- - shared_preferences_windows (0.0.1):
+ - SDWebImage (5.12.1):
+ - SDWebImage/Core (= 5.12.1)
+ - SDWebImage/Core (5.12.1)
+ - searchable_dropdown (1.1.1):
- Flutter
- - sms_otp_auto_verify (0.0.1):
+ - shared_preferences_ios (0.0.1):
- Flutter
- speech_to_text (0.0.1):
- Flutter
@@ -518,185 +234,115 @@ PODS:
- sqflite (0.0.2):
- Flutter
- FMDB (>= 2.7.5)
- - SwiftyGif (5.4.0)
- - TOCropViewController (2.5.5)
+ - SwiftyGif (5.4.1)
- Try (2.1.1)
- - "twilio_programmable_video (0.6.4+1)":
- - Flutter
- - TwilioVideo (~> 3.7)
- - TwilioVideo (3.8.0)
- - url_launcher (0.0.1):
- - Flutter
- - url_launcher_linux (0.0.1):
- - Flutter
- - url_launcher_macos (0.0.1):
- - Flutter
- - url_launcher_web (0.0.1):
- - Flutter
- - url_launcher_windows (0.0.1):
+ - url_launcher_ios (0.0.1):
- Flutter
- vibration (1.7.3):
- Flutter
- - vibration_web (1.6.2):
- - Flutter
- video_player (0.0.1):
- Flutter
- - video_player_web (0.0.1):
- - Flutter
- wakelock (0.0.1):
- Flutter
- - webview_flutter (0.0.1):
+ - WebRTC-SDK (92.4515.11)
+ - webview_flutter_wkwebview (0.0.1):
- Flutter
- wifi (0.0.1):
- Flutter
DEPENDENCIES:
- - android_intent (from `.symlinks/plugins/android_intent/ios`)
+ - audio_session (from `.symlinks/plugins/audio_session/ios`)
- barcode_scan_fix (from `.symlinks/plugins/barcode_scan_fix/ios`)
- - cloud_firestore (from `.symlinks/plugins/cloud_firestore/ios`)
- - cloud_firestore_web (from `.symlinks/plugins/cloud_firestore_web/ios`)
+ - camera (from `.symlinks/plugins/camera/ios`)
- connectivity (from `.symlinks/plugins/connectivity/ios`)
- - connectivity_for_web (from `.symlinks/plugins/connectivity_for_web/ios`)
- - connectivity_macos (from `.symlinks/plugins/connectivity_macos/ios`)
- device_calendar (from `.symlinks/plugins/device_calendar/ios`)
- - device_info (from `.symlinks/plugins/device_info/ios`)
- file_picker (from `.symlinks/plugins/file_picker/ios`)
- - file_picker_web (from `.symlinks/plugins/file_picker_web/ios`)
- firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`)
- - firebase_analytics_web (from `.symlinks/plugins/firebase_analytics_web/ios`)
- firebase_core (from `.symlinks/plugins/firebase_core/ios`)
- - firebase_core_web (from `.symlinks/plugins/firebase_core_web/ios`)
- firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`)
+ - fit_kit (from `.symlinks/plugins/fit_kit/ios`)
- Flutter (from `Flutter`)
- - flutter_email_sender (from `.symlinks/plugins/flutter_email_sender/ios`)
- flutter_flexible_toast (from `.symlinks/plugins/flutter_flexible_toast/ios`)
- flutter_hms_gms_availability (from `.symlinks/plugins/flutter_hms_gms_availability/ios`)
- flutter_inappwebview (from `.symlinks/plugins/flutter_inappwebview/ios`)
- flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`)
- - flutter_plugin_android_lifecycle (from `.symlinks/plugins/flutter_plugin_android_lifecycle/ios`)
- flutter_tts (from `.symlinks/plugins/flutter_tts/ios`)
- flutter_webrtc (from `.symlinks/plugins/flutter_webrtc/ios`)
- - geolocator (from `.symlinks/plugins/geolocator/ios`)
+ - geolocator_apple (from `.symlinks/plugins/geolocator_apple/ios`)
- google_maps_flutter (from `.symlinks/plugins/google_maps_flutter/ios`)
- - hexcolor (from `.symlinks/plugins/hexcolor/ios`)
- - huawei_location (from `.symlinks/plugins/huawei_location/ios`)
- - huawei_map (from `.symlinks/plugins/huawei_map/ios`)
- - image_cropper (from `.symlinks/plugins/image_cropper/ios`)
- image_picker (from `.symlinks/plugins/image_picker/ios`)
- in_app_review (from `.symlinks/plugins/in_app_review/ios`)
- - in_app_update (from `.symlinks/plugins/in_app_update/ios`)
- just_audio (from `.symlinks/plugins/just_audio/ios`)
- local_auth (from `.symlinks/plugins/local_auth/ios`)
- location (from `.symlinks/plugins/location/ios`)
- manage_calendar_events (from `.symlinks/plugins/manage_calendar_events/ios`)
- - map_launcher (from `.symlinks/plugins/map_launcher/ios`)
- maps_launcher (from `.symlinks/plugins/maps_launcher/ios`)
- native_device_orientation (from `.symlinks/plugins/native_device_orientation/ios`)
- nfc_in_flutter (from `.symlinks/plugins/nfc_in_flutter/ios`)
- - NVActivityIndicatorView
- - OpenTok
- - path_provider (from `.symlinks/plugins/path_provider/ios`)
- - path_provider_linux (from `.symlinks/plugins/path_provider_linux/ios`)
- - path_provider_macos (from `.symlinks/plugins/path_provider_macos/ios`)
- - path_provider_windows (from `.symlinks/plugins/path_provider_windows/ios`)
+ - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
+ - path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`)
- permission_handler (from `.symlinks/plugins/permission_handler/ios`)
- screen (from `.symlinks/plugins/screen/ios`)
- - shared_preferences (from `.symlinks/plugins/shared_preferences/ios`)
- - shared_preferences_linux (from `.symlinks/plugins/shared_preferences_linux/ios`)
- - shared_preferences_macos (from `.symlinks/plugins/shared_preferences_macos/ios`)
- - shared_preferences_web (from `.symlinks/plugins/shared_preferences_web/ios`)
- - shared_preferences_windows (from `.symlinks/plugins/shared_preferences_windows/ios`)
- - sms_otp_auto_verify (from `.symlinks/plugins/sms_otp_auto_verify/ios`)
+ - searchable_dropdown (from `.symlinks/plugins/searchable_dropdown/ios`)
+ - shared_preferences_ios (from `.symlinks/plugins/shared_preferences_ios/ios`)
- speech_to_text (from `.symlinks/plugins/speech_to_text/ios`)
- sqflite (from `.symlinks/plugins/sqflite/ios`)
- - twilio_programmable_video (from `.symlinks/plugins/twilio_programmable_video/ios`)
- - url_launcher (from `.symlinks/plugins/url_launcher/ios`)
- - url_launcher_linux (from `.symlinks/plugins/url_launcher_linux/ios`)
- - url_launcher_macos (from `.symlinks/plugins/url_launcher_macos/ios`)
- - url_launcher_web (from `.symlinks/plugins/url_launcher_web/ios`)
- - url_launcher_windows (from `.symlinks/plugins/url_launcher_windows/ios`)
+ - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
- vibration (from `.symlinks/plugins/vibration/ios`)
- - vibration_web (from `.symlinks/plugins/vibration_web/ios`)
- video_player (from `.symlinks/plugins/video_player/ios`)
- - video_player_web (from `.symlinks/plugins/video_player_web/ios`)
- wakelock (from `.symlinks/plugins/wakelock/ios`)
- - webview_flutter (from `.symlinks/plugins/webview_flutter/ios`)
+ - webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/ios`)
- wifi (from `.symlinks/plugins/wifi/ios`)
SPEC REPOS:
trunk:
- - abseil
- - BoringSSL-GRPC
- DKImagePickerController
- DKPhotoGallery
- Firebase
- FirebaseAnalytics
- FirebaseCore
- FirebaseCoreDiagnostics
- - FirebaseFirestore
- FirebaseInstallations
- - FirebaseInstanceID
- FirebaseMessaging
- FMDB
- GoogleAppMeasurement
- GoogleDataTransport
- GoogleMaps
- GoogleUtilities
- - GoogleWebRTC
- - "gRPC-C++"
- - gRPC-Core
- - leveldb-library
- Libyuv
- MTBBarcodeScanner
- nanopb
- - NVActivityIndicatorView
- - OpenTok
+ - OrderedSet
- PromisesObjC
- - Protobuf
- Reachability
- SDWebImage
- SwiftyGif
- - TOCropViewController
- Try
- - TwilioVideo
+ - WebRTC-SDK
EXTERNAL SOURCES:
- android_intent:
- :path: ".symlinks/plugins/android_intent/ios"
+ audio_session:
+ :path: ".symlinks/plugins/audio_session/ios"
barcode_scan_fix:
:path: ".symlinks/plugins/barcode_scan_fix/ios"
- cloud_firestore:
- :path: ".symlinks/plugins/cloud_firestore/ios"
- cloud_firestore_web:
- :path: ".symlinks/plugins/cloud_firestore_web/ios"
+ camera:
+ :path: ".symlinks/plugins/camera/ios"
connectivity:
:path: ".symlinks/plugins/connectivity/ios"
- connectivity_for_web:
- :path: ".symlinks/plugins/connectivity_for_web/ios"
- connectivity_macos:
- :path: ".symlinks/plugins/connectivity_macos/ios"
device_calendar:
:path: ".symlinks/plugins/device_calendar/ios"
- device_info:
- :path: ".symlinks/plugins/device_info/ios"
file_picker:
:path: ".symlinks/plugins/file_picker/ios"
- file_picker_web:
- :path: ".symlinks/plugins/file_picker_web/ios"
firebase_analytics:
:path: ".symlinks/plugins/firebase_analytics/ios"
- firebase_analytics_web:
- :path: ".symlinks/plugins/firebase_analytics_web/ios"
firebase_core:
:path: ".symlinks/plugins/firebase_core/ios"
- firebase_core_web:
- :path: ".symlinks/plugins/firebase_core_web/ios"
firebase_messaging:
:path: ".symlinks/plugins/firebase_messaging/ios"
+ fit_kit:
+ :path: ".symlinks/plugins/fit_kit/ios"
Flutter:
:path: Flutter
- flutter_email_sender:
- :path: ".symlinks/plugins/flutter_email_sender/ios"
flutter_flexible_toast:
:path: ".symlinks/plugins/flutter_flexible_toast/ios"
flutter_hms_gms_availability:
@@ -705,30 +351,18 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/flutter_inappwebview/ios"
flutter_local_notifications:
:path: ".symlinks/plugins/flutter_local_notifications/ios"
- flutter_plugin_android_lifecycle:
- :path: ".symlinks/plugins/flutter_plugin_android_lifecycle/ios"
flutter_tts:
:path: ".symlinks/plugins/flutter_tts/ios"
flutter_webrtc:
:path: ".symlinks/plugins/flutter_webrtc/ios"
- geolocator:
- :path: ".symlinks/plugins/geolocator/ios"
+ geolocator_apple:
+ :path: ".symlinks/plugins/geolocator_apple/ios"
google_maps_flutter:
:path: ".symlinks/plugins/google_maps_flutter/ios"
- hexcolor:
- :path: ".symlinks/plugins/hexcolor/ios"
- huawei_location:
- :path: ".symlinks/plugins/huawei_location/ios"
- huawei_map:
- :path: ".symlinks/plugins/huawei_map/ios"
- image_cropper:
- :path: ".symlinks/plugins/image_cropper/ios"
image_picker:
:path: ".symlinks/plugins/image_picker/ios"
in_app_review:
:path: ".symlinks/plugins/in_app_review/ios"
- in_app_update:
- :path: ".symlinks/plugins/in_app_update/ios"
just_audio:
:path: ".symlinks/plugins/just_audio/ios"
local_auth:
@@ -737,174 +371,108 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/location/ios"
manage_calendar_events:
:path: ".symlinks/plugins/manage_calendar_events/ios"
- map_launcher:
- :path: ".symlinks/plugins/map_launcher/ios"
maps_launcher:
:path: ".symlinks/plugins/maps_launcher/ios"
native_device_orientation:
:path: ".symlinks/plugins/native_device_orientation/ios"
nfc_in_flutter:
:path: ".symlinks/plugins/nfc_in_flutter/ios"
- path_provider:
- :path: ".symlinks/plugins/path_provider/ios"
- path_provider_linux:
- :path: ".symlinks/plugins/path_provider_linux/ios"
- path_provider_macos:
- :path: ".symlinks/plugins/path_provider_macos/ios"
- path_provider_windows:
- :path: ".symlinks/plugins/path_provider_windows/ios"
+ package_info_plus:
+ :path: ".symlinks/plugins/package_info_plus/ios"
+ path_provider_ios:
+ :path: ".symlinks/plugins/path_provider_ios/ios"
permission_handler:
:path: ".symlinks/plugins/permission_handler/ios"
screen:
:path: ".symlinks/plugins/screen/ios"
- shared_preferences:
- :path: ".symlinks/plugins/shared_preferences/ios"
- shared_preferences_linux:
- :path: ".symlinks/plugins/shared_preferences_linux/ios"
- shared_preferences_macos:
- :path: ".symlinks/plugins/shared_preferences_macos/ios"
- shared_preferences_web:
- :path: ".symlinks/plugins/shared_preferences_web/ios"
- shared_preferences_windows:
- :path: ".symlinks/plugins/shared_preferences_windows/ios"
- sms_otp_auto_verify:
- :path: ".symlinks/plugins/sms_otp_auto_verify/ios"
+ searchable_dropdown:
+ :path: ".symlinks/plugins/searchable_dropdown/ios"
+ shared_preferences_ios:
+ :path: ".symlinks/plugins/shared_preferences_ios/ios"
speech_to_text:
:path: ".symlinks/plugins/speech_to_text/ios"
sqflite:
:path: ".symlinks/plugins/sqflite/ios"
- twilio_programmable_video:
- :path: ".symlinks/plugins/twilio_programmable_video/ios"
- url_launcher:
- :path: ".symlinks/plugins/url_launcher/ios"
- url_launcher_linux:
- :path: ".symlinks/plugins/url_launcher_linux/ios"
- url_launcher_macos:
- :path: ".symlinks/plugins/url_launcher_macos/ios"
- url_launcher_web:
- :path: ".symlinks/plugins/url_launcher_web/ios"
- url_launcher_windows:
- :path: ".symlinks/plugins/url_launcher_windows/ios"
+ url_launcher_ios:
+ :path: ".symlinks/plugins/url_launcher_ios/ios"
vibration:
:path: ".symlinks/plugins/vibration/ios"
- vibration_web:
- :path: ".symlinks/plugins/vibration_web/ios"
video_player:
:path: ".symlinks/plugins/video_player/ios"
- video_player_web:
- :path: ".symlinks/plugins/video_player_web/ios"
wakelock:
:path: ".symlinks/plugins/wakelock/ios"
- webview_flutter:
- :path: ".symlinks/plugins/webview_flutter/ios"
+ webview_flutter_wkwebview:
+ :path: ".symlinks/plugins/webview_flutter_wkwebview/ios"
wifi:
:path: ".symlinks/plugins/wifi/ios"
SPEC CHECKSUMS:
- abseil: 6c8eb7892aefa08d929b39f9bb108e5367e3228f
- android_intent: 367df2f1277a74e4a90e14a8ab3df3112d087052
+ audio_session: 4f3e461722055d21515cf3261b64c973c062f345
barcode_scan_fix: 80dd65de55f27eec6591dd077c8b85f2b79e31f1
- BoringSSL-GRPC: 8edf627ee524575e2f8d19d56f068b448eea3879
- cloud_firestore: b8c0e15fa49dfff87c2817d288b577e5dca2df13
- cloud_firestore_web: 9ec3dc7f5f98de5129339802d491c1204462bfec
+ camera: fe33292aff715a981eb34d7ce7b35b54337ff34c
connectivity: c4130b2985d4ef6fd26f9702e886bd5260681467
- connectivity_for_web: 2b8584556930d4bd490d82b836bcf45067ce345b
- connectivity_macos: e2e9731b6b22dda39eb1b128f6969d574460e191
device_calendar: 23b28a5f1ab3bf77e34542fb1167e1b8b29a98f5
- device_info: d7d233b645a32c40dfdc212de5cf646ca482f175
DKImagePickerController: b5eb7f7a388e4643264105d648d01f727110fc3d
DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
file_picker: 3e6c3790de664ccf9b882732d9db5eaf6b8d4eb1
- file_picker_web: 37b10786e88885124fac99dc899866e78a132ef3
- Firebase: 8db6f2d1b2c5e2984efba4949a145875a8f65fe5
- firebase_analytics: 36a619088c46224900829f14f4daa71585693a6f
- firebase_analytics_web: 7d539061ea4af07563a0e21044af89cab70efec0
- firebase_core: 5d6a02f3d85acd5f8321c2d6d62877626a670659
- firebase_core_web: d501d8b946b60c8af265428ce483b0fff5ad52d1
- firebase_messaging: 0aea2cd5885b65e19ede58ee3507f485c992cc75
- FirebaseAnalytics: 5dd088bd2e67bb9d13dbf792d1164ceaf3052193
- FirebaseCore: d889d9e12535b7f36ac8bfbf1713a0836a3012cd
- FirebaseCoreDiagnostics: 770ac5958e1372ce67959ae4b4f31d8e127c3ac1
- FirebaseFirestore: adff4877869ca91a11250cc0989a6cd56bad163f
- FirebaseInstallations: 466c7b4d1f58fe16707693091da253726a731ed2
- FirebaseInstanceID: bd3ffc24367f901a43c063b36c640b345a4a5dd1
- FirebaseMessaging: 5eca4ef173de76253352511aafef774caa1cba2a
- Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
- flutter_email_sender: f787522d0e82f50e5766c1213dbffff22fdcf009
+ Firebase: 13d8d96499e2635428d5bf0ec675df21f95d9a95
+ firebase_analytics: 7a7528bb2abf4ca22cff7a57bbf909dcab73e13d
+ firebase_core: f770e033e790657b3505f04be4cb24c482912f11
+ firebase_messaging: 0c8d1a1732487db7f332fb65232053e93201e2fb
+ FirebaseAnalytics: 4ab446ce08a3fe52e8a4303dd997cf26276bf968
+ FirebaseCore: 599ee609343eaf4941bd188f85e3aa077ffe325b
+ FirebaseCoreDiagnostics: 56fb7216d87e0e6ec2feddefa9d8a392fe8b2c18
+ FirebaseInstallations: 830327b45345ffc859eaa9c17bcd5ae893fd5425
+ FirebaseMessaging: 82c4a48638f53f7b184f3cc9f6cd2cbe533ab316
+ fit_kit: 7643191161673bcd32863ae3f10baed6ce55c7c0
+ Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
flutter_flexible_toast: 0547e740cae0c33bb7c51bcd931233f4584e1143
flutter_hms_gms_availability: babc50b18670e99780270bc18d9b17d0a07cd77e
- flutter_inappwebview: 69dfbac46157b336ffbec19ca6dfd4638c7bf189
- flutter_local_notifications: 9e4738ce2471c5af910d961a6b7eadcf57c50186
- flutter_plugin_android_lifecycle: dc0b544e129eebb77a6bfb1239d4d1c673a60a35
+ flutter_inappwebview: bfd58618f49dc62f2676de690fc6dcda1d6c3721
+ flutter_local_notifications: 0c0b1ae97e741e1521e4c1629a459d04b9aec743
flutter_tts: 0f492aab6accf87059b72354fcb4ba934304771d
- flutter_webrtc: 39898454258b54ba51996850d5da8d5d53bf1524
+ flutter_webrtc: a5a79904f0bca0ea23aff49c51ca765f70a0f703
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
- geolocator: f5e3de65e241caba7ce3e8a618803387bda73384
- google_maps_flutter: c7f9c73576de1fbe152a227bfd6e6c4ae8088619
- GoogleAppMeasurement: 966e88df9d19c15715137bb2ddaf52373f111436
- GoogleDataTransport: f56af7caa4ed338dc8e138a5d7c5973e66440833
- GoogleMaps: 4b5346bddfe6911bb89155d43c903020170523ac
- GoogleUtilities: 7f2f5a07f888cdb145101d6042bc4422f57e70b3
- GoogleWebRTC: b39a78c4f5cc6b0323415b9233db03a2faa7b0f0
- "gRPC-C++": 13d8ccef97d5c3c441b7e3c529ef28ebee86fad2
- gRPC-Core: 4afa11bfbedf7cdecd04de535a9e046893404ed5
- hexcolor: fdfb9c4258ad96e949c2dbcdf790a62194b8aa89
- huawei_location: a1c3d2a029138b3d0b9a72ce910ffae3ff23c1aa
- huawei_map: 34fbad9c274ea78a4151487c9ebe27f1887777e7
- image_cropper: c8f9b4157933c7bb965a66d1c5e6c8fd408c6eb4
- image_picker: 9c3312491f862b28d21ecd8fdf0ee14e601b3f09
+ geolocator_apple: b741765c55dc21950e3e106e8b3584e55cf81ce5
+ google_maps_flutter: abdb8dee6c52d4be36ad131ee6ebfacd14417c5a
+ GoogleAppMeasurement: 837649ad3987936c232f6717c5680216f6243d24
+ GoogleDataTransport: 629c20a4d363167143f30ea78320d5a7eb8bd940
+ GoogleMaps: 025272d5876d3b32604e5c080dc25eaf68764693
+ GoogleUtilities: 684ee790a24f73ebb2d1d966e9711c203f2a4237
+ image_picker: 9aa50e1d8cdacdbed739e925b7eea16d014367e6
in_app_review: 4a97249f7a2f539a0f294c2d9196b7fe35e49541
- in_app_update: 16e877e205f4360264cb536e3a6481f0d90299e1
just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa
- leveldb-library: 55d93ee664b4007aac644a782d11da33fba316f7
Libyuv: 5f79ced0ee66e60a612ca97de1e6ccacd187a437
- local_auth: 25938960984c3a7f6e3253e3f8d962fdd16852bd
+ local_auth: ef62030a2731330b95df7ef1331bd15f6a64b8a6
location: 3a2eed4dd2fab25e7b7baf2a9efefe82b512d740
manage_calendar_events: 0338d505ea26cdfd20cd883279bc28afa11eca34
- map_launcher: e325db1261d029ff33e08e03baccffe09593ffea
- maps_launcher: eae38ee13a9c3f210fa04e04bb4c073fa4c6ed92
+ maps_launcher: 2e5b6a2d664ec6c27f82ffa81b74228d770ab203
MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb
- nanopb: 59317e09cf1f1a0af72f12af412d54edf52603fc
- native_device_orientation: e24d00be281de72996640885d80e706142707660
+ nanopb: a0ba3315591a9ae0a16a309ee504766e90db0c96
+ native_device_orientation: 3b4cfc9565a7b879cc4fde282b3e27745e852d0d
nfc_in_flutter: c656fbfb1ec5b9d021da87b0c87629d62fd5264d
- NVActivityIndicatorView: 1f6c5687f1171810aa27a3296814dc2d7dec3667
- OpenTok: 414c2c1dc6486f1897015e4d1703558d5eed48c3
- path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c
- path_provider_linux: 4d630dc393e1f20364f3e3b4a2ff41d9674a84e4
- path_provider_macos: f760a3c5b04357c380e2fddb6f9db6f3015897e0
- path_provider_windows: a2b81600c677ac1959367280991971cb9a1edb3b
+ OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c
+ package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e
+ path_provider_ios: 7d7ce634493af4477d156294792024ec3485acd5
permission_handler: ccb20a9fad0ee9b1314a52b70b76b473c5f8dab0
- PromisesObjC: 8c196f5a328c2cba3e74624585467a557dcb482f
- Protobuf: 3dac39b34a08151c6d949560efe3f86134a3f748
+ PromisesObjC: 68159ce6952d93e17b2dfe273b8c40907db5ba58
Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
screen: abd91ca7bf3426e1cc3646d27e9b2358d6bf07b0
- SDWebImage: c666b97e1fa9c64b4909816a903322018f0a9c84
- shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d
- shared_preferences_linux: afefbfe8d921e207f01ede8b60373d9e3b566b78
- shared_preferences_macos: f3f29b71ccbb56bf40c9dd6396c9acf15e214087
- shared_preferences_web: 141cce0c3ed1a1c5bf2a0e44f52d31eeb66e5ea9
- shared_preferences_windows: 36b76d6f54e76ead957e60b49e2f124b4cd3e6ae
- sms_otp_auto_verify: 201803ac25e13feedaae96eda8b70b10c55b3338
+ SDWebImage: 4dc3e42d9ec0c1028b960a33ac6b637bb432207b
+ searchable_dropdown: 5058be32fdc5e0481d300ff2087129072e71bd62
+ shared_preferences_ios: aef470a42dc4675a1cdd50e3158b42e3d1232b32
speech_to_text: b43a7d99aef037bd758ed8e45d79bbac035d2dfe
sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904
- SwiftyGif: 5d4af95df24caf1c570dbbcb32a3b8a0763bc6d7
- TOCropViewController: da59f531f8ac8a94ef6d6c0fc34009350f9e8bfe
+ SwiftyGif: 6895c887f5551618a3c5dd3ecb512419105bacca
Try: 5ef669ae832617b3cee58cb2c6f99fb767a4ff96
- twilio_programmable_video: ce33772ea8275b413c0ab5c5aa2e35f9da2d4066
- TwilioVideo: c13a51ceca375e91620eb7578d2573c90cf53b46
- url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef
- url_launcher_linux: ac237cb7a8058736e4aae38bdbcc748a4b394cc0
- url_launcher_macos: fd7894421cd39320dce5f292fc99ea9270b2a313
- url_launcher_web: e5527357f037c87560776e36436bf2b0288b965c
- url_launcher_windows: 683d7c283894db8d1914d3ab2223b20cc1ad95d5
+ url_launcher_ios: 02f1989d4e14e998335b02b67a7590fa34f971af
vibration: b5a33e764c3f609a975b9dca73dce20fdde627dc
- vibration_web: 0ba303d92469ba34d71c612a228b315908d7fcd9
- video_player: 9cc823b1d9da7e8427ee591e8438bfbcde500e6e
- video_player_web: da8cadb8274ed4f8dbee8d7171b420dedd437ce7
- wakelock: 0d4a70faf8950410735e3f61fb15d517c8a6efc4
- webview_flutter: d2b4d6c66968ad042ad94cbb791f5b72b4678a96
+ video_player: ecd305f42e9044793efd34846e1ce64c31ea6fcb
+ wakelock: d0fc7c864128eac40eba1617cb5264d9c940b46f
+ WebRTC-SDK: 21dbc6028a68f3a89718057a2caa970a4da8ebb7
+ webview_flutter_wkwebview: 005fbd90c888a42c5690919a1527ecc6649e1162
wifi: d7d77c94109e36c4175d845f0a5964eadba71060
-PODFILE CHECKSUM: df22e8ed6009dd48559053927dc365d6dad6c11f
+PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c
-COCOAPODS: 1.10.1
+COCOAPODS: 1.11.2
diff --git a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
index 1d526a16..919434a6 100644
--- a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
+++ b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -2,6 +2,6 @@
+ location = "self:">
diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift
index 35a3c022..8826bbdd 100644
--- a/ios/Runner/AppDelegate.swift
+++ b/ios/Runner/AppDelegate.swift
@@ -29,12 +29,12 @@ var userNotificationCenterDelegate:UNUserNotificationCenterDelegate? = nil
if let mainViewController = window.rootViewController as? MainFlutterVC{ // platform initialization suppose to be in foreground
flutterViewController = mainViewController
HMGPlatformBridge.initialize(flutterViewController: flutterViewController)
- OpenTokPlatformBridge.initialize(flutterViewController: flutterViewController, registrar: self.registrar(forPlugin: "open-tok"))
+// OpenTokPlatformBridge.initialize(flutterViewController: flutterViewController, registrar: self.registrar(forPlugin: "open-tok"))
}else if let mainViewController = initialViewController(){ // platform initialization suppose to be in background
flutterViewController = mainViewController
HMGPlatformBridge.initialize(flutterViewController: flutterViewController)
- OpenTokPlatformBridge.initialize(flutterViewController: flutterViewController, registrar: self.registrar(forPlugin: "open-tok"))
+// OpenTokPlatformBridge.initialize(flutterViewController: flutterViewController, registrar: self.registrar(forPlugin: "open-tok"))
}
}
diff --git a/ios/Runner/Helper/OpenTokPlatformBridge.swift b/ios/Runner/Helper/OpenTokPlatformBridge.swift
index 38e826e1..132f1384 100644
--- a/ios/Runner/Helper/OpenTokPlatformBridge.swift
+++ b/ios/Runner/Helper/OpenTokPlatformBridge.swift
@@ -8,52 +8,51 @@
import UIKit
import NetworkExtension
import SystemConfiguration.CaptiveNetwork
-import OpenTok
fileprivate var openTok:OpenTok?
class OpenTokPlatformBridge : NSObject{
- private var methodChannel:FlutterMethodChannel? = nil
- private var mainViewController:MainFlutterVC!
- private static var shared_:OpenTokPlatformBridge?
-
- class func initialize(flutterViewController:MainFlutterVC, registrar:FlutterPluginRegistrar?){
- shared_ = OpenTokPlatformBridge()
- shared_?.mainViewController = flutterViewController
-
- shared_?.openChannel()
- openTok = OpenTok(mainViewController: flutterViewController, registrar: registrar)
- }
-
- func shared() -> OpenTokPlatformBridge{
- assert((OpenTokPlatformBridge.shared_ != nil), "OpenTokPlatformBridge is not initialized, call initialize(mainViewController:MainFlutterVC) function first.")
- return OpenTokPlatformBridge.shared_!
- }
-
- private func openChannel(){
- methodChannel = FlutterMethodChannel(name: "OpenTok-Platform-Bridge", binaryMessenger: mainViewController.binaryMessenger)
- methodChannel?.setMethodCallHandler { (call, result) in
- print("Called function \(call.method)")
-
- switch(call.method) {
- case "initSession":
- openTok?.initSession(call: call, result: result)
-
- case "swapCamera":
- openTok?.swapCamera(call: call, result: result)
-
- case "toggleAudio":
- openTok?.toggleAudio(call: call, result: result)
-
- case "toggleVideo":
- openTok?.toggleVideo(call: call, result: result)
-
- default:
- result(FlutterMethodNotImplemented)
- }
-
- print("")
- }
- }
+// private var methodChannel:FlutterMethodChannel? = nil
+// private var mainViewController:MainFlutterVC!
+// private static var shared_:OpenTokPlatformBridge?
+//
+// class func initialize(flutterViewController:MainFlutterVC, registrar:FlutterPluginRegistrar?){
+// shared_ = OpenTokPlatformBridge()
+// shared_?.mainViewController = flutterViewController
+//
+// shared_?.openChannel()
+// openTok = OpenTok(mainViewController: flutterViewController, registrar: registrar)
+// }
+//
+// func shared() -> OpenTokPlatformBridge{
+// assert((OpenTokPlatformBridge.shared_ != nil), "OpenTokPlatformBridge is not initialized, call initialize(mainViewController:MainFlutterVC) function first.")
+// return OpenTokPlatformBridge.shared_!
+// }
+//
+// private func openChannel(){
+// methodChannel = FlutterMethodChannel(name: "OpenTok-Platform-Bridge", binaryMessenger: mainViewController.binaryMessenger)
+// methodChannel?.setMethodCallHandler { (call, result) in
+// print("Called function \(call.method)")
+//
+// switch(call.method) {
+// case "initSession":
+// openTok?.initSession(call: call, result: result)
+//
+// case "swapCamera":
+// openTok?.swapCamera(call: call, result: result)
+//
+// case "toggleAudio":
+// openTok?.toggleAudio(call: call, result: result)
+//
+// case "toggleVideo":
+// openTok?.toggleVideo(call: call, result: result)
+//
+// default:
+// result(FlutterMethodNotImplemented)
+// }
+//
+// print("")
+// }
+// }
}
diff --git a/ios/Runner/OpenTok/OpenTok.swift b/ios/Runner/OpenTok/OpenTok.swift
index 9cc0b79a..f91d83d5 100644
--- a/ios/Runner/OpenTok/OpenTok.swift
+++ b/ios/Runner/OpenTok/OpenTok.swift
@@ -6,7 +6,7 @@
//
import Foundation
-import OpenTok
+//import OpenTok
import UIKit
enum SdkState: String {
@@ -17,163 +17,164 @@ enum SdkState: String {
}
class OpenTok : NSObject{
- private var mainViewController:MainFlutterVC!
- private var registrar:FlutterPluginRegistrar?
- var methodChannel: FlutterMethodChannel?
- init(mainViewController:MainFlutterVC, registrar:FlutterPluginRegistrar?){
- self.mainViewController = mainViewController
- self.methodChannel = FlutterMethodChannel(name: "OpenTok-Platform-Bridge", binaryMessenger: mainViewController.binaryMessenger)
- self.registrar = registrar
-
- let remoteVDOFactory = OpenTokRemoteVideoFactory(messenger: registrar!.messenger())
- registrar?.register(remoteVDOFactory, withId: "remote-video-container")
-
- let localVDOFactory = OpenTokLocalVideoFactory(messenger: registrar!.messenger())
- registrar?.register(localVDOFactory, withId: "local-video-container")
- }
-
- var otSession: OTSession?
-
- var subscriber: OTSubscriber?
- lazy var publisher: OTPublisher = {
- let settings = OTPublisherSettings()
- settings.name = UIDevice.current.name
- return OTPublisher(delegate: self, settings: settings)!
- }()
-
- func initSession(call:FlutterMethodCall, result: @escaping FlutterResult){
- if let arguments = call.arguments as? [String: String],
- let apiKey = arguments["apiKey"],
- let sessionId = arguments["sessionId"],
- let token = arguments["token"]{
-
- var error: OTError?
- defer {
- // todo
- }
-
- notifyFlutter(state: SdkState.wait)
- otSession = OTSession(apiKey: apiKey, sessionId: sessionId, delegate: self)!
- otSession?.connect(withToken: token, error: &error)
-
- result("")
- }else{
-
- }
-
- }
-
-
- func swapCamera(call:FlutterMethodCall, result: @escaping FlutterResult) {
- if publisher.cameraPosition == .front {
- publisher.cameraPosition = .back
- } else {
- publisher.cameraPosition = .front
- }
- result("")
- }
-
- func toggleAudio(call:FlutterMethodCall, result: @escaping FlutterResult) {
- if let arguments = call.arguments as? [String: Bool],
- let publishAudio = arguments["publishAudio"] {
- publisher.publishAudio = !publisher.publishAudio
- }
- result("")
- }
-
- func toggleVideo(call:FlutterMethodCall, result: @escaping FlutterResult) {
- if let arguments = call.arguments as? [String: Bool],
- let publishVideo = arguments["publishVideo"] {
- publisher.publishVideo = !publisher.publishVideo
- }
- result("")
- }
-
-
- func notifyFlutter(state: SdkState) {
- methodChannel?.invokeMethod("updateState", arguments: state.rawValue)
- }
-
-}
-
-extension OpenTok: OTSessionDelegate {
- func sessionDidConnect(_ sessionDelegate: OTSession) {
- print("The client connected to the session.")
- notifyFlutter(state: SdkState.loggedIn)
-
- var error: OTError?
- defer {
- // todo
- }
-
- self.otSession?.publish(self.publisher, error: &error)
-
- if let pubView = self.publisher.view {
- pubView.frame = CGRect(x: 0, y: 0, width: 200, height: 300)
-
- if OpenTokLocalVideoFactory.view == nil {
- OpenTokLocalVideoFactory.viewToAddPub = pubView
- } else {
- OpenTokLocalVideoFactory.view?.addPublisherView(pubView)
- }
- }
- }
-
- func sessionDidDisconnect(_ session: OTSession) {
- print("The client disconnected from the session.")
- notifyFlutter(state: SdkState.loggedOut)
- }
-
- func session(_ session: OTSession, didFailWithError error: OTError) {
- print("The client failed to connect to the session: \(error).")
- }
-
- func session(_ session: OTSession, streamCreated stream: OTStream) {
- print("A stream was created in the session.")
- var error: OTError?
- defer {
- // todo
- }
- subscriber = OTSubscriber(stream: stream, delegate: self)
-
- session.subscribe(subscriber!, error: &error)
- }
-
- func session(_ session: OTSession, streamDestroyed stream: OTStream) {
- print("A stream was destroyed in the session.")
- }
-}
-
-extension OpenTok: OTPublisherDelegate {
- func publisher(_ publisher: OTPublisherKit, streamCreated stream: OTStream) {
- }
-
- func publisher(_ publisher: OTPublisherKit, streamDestroyed stream: OTStream) {
- }
-
- func publisher(_ publisher: OTPublisherKit, didFailWithError error: OTError) {
- print("Publisher failed: \(error.localizedDescription)")
- }
-}
-
-extension OpenTok: OTSubscriberDelegate {
- func subscriberDidConnect(toStream subscriberKit: OTSubscriberKit) {
- print("Subscriber connected")
-
- if let subView = self.subscriber?.view {
- subView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
-
- if OpenTokRemoteVideoFactory.view == nil {
- OpenTokRemoteVideoFactory.viewToAddSub = subView
- } else {
- OpenTokRemoteVideoFactory.view?.addSubscriberView(subView)
- }
- }
- }
-
- func subscriber(_ subscriber: OTSubscriberKit, didFailWithError error: OTError) {
- print("Subscriber failed: \(error.localizedDescription)")
- }
+// private var mainViewController:MainFlutterVC!
+// private var registrar:FlutterPluginRegistrar?
+// var methodChannel: FlutterMethodChannel?
+//
+// init(mainViewController:MainFlutterVC, registrar:FlutterPluginRegistrar?){
+// self.mainViewController = mainViewController
+// self.methodChannel = FlutterMethodChannel(name: "OpenTok-Platform-Bridge", binaryMessenger: mainViewController.binaryMessenger)
+// self.registrar = registrar
+//
+// let remoteVDOFactory = OpenTokRemoteVideoFactory(messenger: registrar!.messenger())
+// registrar?.register(remoteVDOFactory, withId: "remote-video-container")
+//
+// let localVDOFactory = OpenTokLocalVideoFactory(messenger: registrar!.messenger())
+// registrar?.register(localVDOFactory, withId: "local-video-container")
+// }
+//
+// var otSession: OTSession?
+//
+// var subscriber: OTSubscriber?
+// lazy var publisher: OTPublisher = {
+// let settings = OTPublisherSettings()
+// settings.name = UIDevice.current.name
+// return OTPublisher(delegate: self, settings: settings)!
+// }()
+//
+// func initSession(call:FlutterMethodCall, result: @escaping FlutterResult){
+// if let arguments = call.arguments as? [String: String],
+// let apiKey = arguments["apiKey"],
+// let sessionId = arguments["sessionId"],
+// let token = arguments["token"]{
+//
+// var error: OTError?
+// defer {
+// // todo
+// }
+//
+// notifyFlutter(state: SdkState.wait)
+// otSession = OTSession(apiKey: apiKey, sessionId: sessionId, delegate: self)!
+// otSession?.connect(withToken: token, error: &error)
+//
+// result("")
+// }else{
+//
+// }
+//
+// }
+//
+//
+// func swapCamera(call:FlutterMethodCall, result: @escaping FlutterResult) {
+// if publisher.cameraPosition == .front {
+// publisher.cameraPosition = .back
+// } else {
+// publisher.cameraPosition = .front
+// }
+// result("")
+// }
+//
+// func toggleAudio(call:FlutterMethodCall, result: @escaping FlutterResult) {
+// if let arguments = call.arguments as? [String: Bool],
+// let publishAudio = arguments["publishAudio"] {
+// publisher.publishAudio = !publisher.publishAudio
+// }
+// result("")
+// }
+//
+// func toggleVideo(call:FlutterMethodCall, result: @escaping FlutterResult) {
+// if let arguments = call.arguments as? [String: Bool],
+// let publishVideo = arguments["publishVideo"] {
+// publisher.publishVideo = !publisher.publishVideo
+// }
+// result("")
+// }
+//
+//
+// func notifyFlutter(state: SdkState) {
+// methodChannel?.invokeMethod("updateState", arguments: state.rawValue)
+// }
+//
+//}
+//
+//extension OpenTok: OTSessionDelegate {
+// func sessionDidConnect(_ sessionDelegate: OTSession) {
+// print("The client connected to the session.")
+// notifyFlutter(state: SdkState.loggedIn)
+//
+// var error: OTError?
+// defer {
+// // todo
+// }
+//
+// self.otSession?.publish(self.publisher, error: &error)
+//
+// if let pubView = self.publisher.view {
+// pubView.frame = CGRect(x: 0, y: 0, width: 200, height: 300)
+//
+// if OpenTokLocalVideoFactory.view == nil {
+// OpenTokLocalVideoFactory.viewToAddPub = pubView
+// } else {
+// OpenTokLocalVideoFactory.view?.addPublisherView(pubView)
+// }
+// }
+// }
+//
+// func sessionDidDisconnect(_ session: OTSession) {
+// print("The client disconnected from the session.")
+// notifyFlutter(state: SdkState.loggedOut)
+// }
+//
+// func session(_ session: OTSession, didFailWithError error: OTError) {
+// print("The client failed to connect to the session: \(error).")
+// }
+//
+// func session(_ session: OTSession, streamCreated stream: OTStream) {
+// print("A stream was created in the session.")
+// var error: OTError?
+// defer {
+// // todo
+// }
+// subscriber = OTSubscriber(stream: stream, delegate: self)
+//
+// session.subscribe(subscriber!, error: &error)
+// }
+//
+// func session(_ session: OTSession, streamDestroyed stream: OTStream) {
+// print("A stream was destroyed in the session.")
+// }
+//}
+//
+//extension OpenTok: OTPublisherDelegate {
+// func publisher(_ publisher: OTPublisherKit, streamCreated stream: OTStream) {
+// }
+//
+// func publisher(_ publisher: OTPublisherKit, streamDestroyed stream: OTStream) {
+// }
+//
+// func publisher(_ publisher: OTPublisherKit, didFailWithError error: OTError) {
+// print("Publisher failed: \(error.localizedDescription)")
+// }
+//}
+//
+//extension OpenTok: OTSubscriberDelegate {
+// func subscriberDidConnect(toStream subscriberKit: OTSubscriberKit) {
+// print("Subscriber connected")
+//
+// if let subView = self.subscriber?.view {
+// subView.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
+//
+// if OpenTokRemoteVideoFactory.view == nil {
+// OpenTokRemoteVideoFactory.viewToAddSub = subView
+// } else {
+// OpenTokRemoteVideoFactory.view?.addSubscriberView(subView)
+// }
+// }
+// }
+//
+// func subscriber(_ subscriber: OTSubscriberKit, didFailWithError error: OTError) {
+// print("Subscriber failed: \(error.localizedDescription)")
+// }
}
diff --git a/lib/main.dart b/lib/main.dart
index 9bb465f8..a3175350 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -9,6 +9,7 @@ import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:diplomaticquarterapp/uitl/LocalNotification.dart';
import 'package:diplomaticquarterapp/uitl/PlatformBridge.dart';
import 'package:diplomaticquarterapp/uitl/navigation_service.dart';
+import 'package:diplomaticquarterapp/uitl/push-notification-handler.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
@@ -25,14 +26,10 @@ import 'locator.dart';
import 'pages/pharmacies/compare-list.dart';
-Future _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
- await Firebase.initializeApp();
- print("Handling a background message: ${message.messageId}");
-}
+
void main() async {
WidgetsFlutterBinding.ensureInitialized();
- // FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
await Firebase.initializeApp();
setupLocator();
runApp(MyApp());
@@ -74,6 +71,7 @@ class _MyApp extends State {
@override
Widget build(BuildContext context) {
PlatformBridge.init(context);
+ PushNotificationHandler(context).init(); // Asyncronously
LocalNotification.init(onNotificationClick: (payload) {
LocalNotification.getInstance().showNow(title: "Payload", subtitle: payload, payload: payload);
diff --git a/lib/pages/conference/web_rtc/call_home_page.dart b/lib/pages/conference/web_rtc/call_home_page.dart
index 4af7b1de..dd841a6c 100644
--- a/lib/pages/conference/web_rtc/call_home_page.dart
+++ b/lib/pages/conference/web_rtc/call_home_page.dart
@@ -1,216 +1,61 @@
-import 'dart:async';
-
-import 'package:diplomaticquarterapp/pages/conference/web_rtc/widgets/cam_view_widget.dart';
-import 'package:diplomaticquarterapp/pages/conference/widgets/noise_box.dart';
-import 'package:diplomaticquarterapp/pages/webRTC/call_page.dart';
-import 'package:diplomaticquarterapp/pages/webRTC/signaling.dart';
-import 'package:diplomaticquarterapp/uitl/SignalRUtil.dart';
-import 'package:flutter/material.dart';
-import 'package:flutter/services.dart';
-import 'package:flutter_webrtc/flutter_webrtc.dart';
-
-import '../conference_button_bar.dart';
-
-class CallHomePage extends StatefulWidget {
- final String receiverId;
- final String callerId;
-
- const CallHomePage({Key key, this.receiverId, this.callerId}) : super(key: key);
-
- @override
- _CallHomePageState createState() => _CallHomePageState();
-}
-
-class _CallHomePageState extends State {
- bool showNoise = false;
- RTCVideoRenderer _localRenderer = RTCVideoRenderer();
- RTCVideoRenderer _remoteRenderer = RTCVideoRenderer();
-
- final StreamController _audioButton = StreamController.broadcast();
- final StreamController _videoButton = StreamController.broadcast();
- final StreamController _onButtonBarVisibleStreamController = StreamController.broadcast();
- final StreamController _onButtonBarHeightStreamController = StreamController.broadcast();
-
- //Stream to enable video
- MediaStream localMediaStream;
- MediaStream remoteMediaStream;
- Signaling signaling = Signaling()..init();
-
- @override
- void initState() {
- // TODO: implement initState
- super.initState();
- startCall();
- }
-
- startCall() async{
- await _localRenderer.initialize();
- await _remoteRenderer.initialize();
- final connected = await receivedCall();
- }
-
-
- Future receivedCall() async {
- //Stream local media
- localMediaStream = await navigator.mediaDevices.getUserMedia({'video': true, 'audio': true});
- _localRenderer.srcObject = localMediaStream;
-
- final connected = await signaling.acceptCall(widget.callerId, widget.receiverId, localMediaStream: localMediaStream, onRemoteMediaStream: (remoteMediaStream){
- this.remoteMediaStream = remoteMediaStream;
- _remoteRenderer.srcObject = remoteMediaStream;
- });
-
- if(connected){
- signaling.signalR.listen(
- onAcceptCall: (arg0){
- print(arg0.toString());
- },
- onCandidate: (candidateJson){
- signaling.addCandidate(candidateJson);
- },
- onDeclineCall: (arg0,arg1){
- // _onHangup();
- },
- onHangupCall: (arg0){
- // _onHangup();
- },
-
- onOffer: (offerSdp, callerUser) async{
- print('${offerSdp.toString()} | ${callerUser.toString()}');
- await signaling.answerOffer(offerSdp);
- }
- );
- }
- return connected;
- }
-
- @override
- void dispose() {
- // TODO: implement dispose
- super.dispose();
- _localRenderer?.dispose();
- _remoteRenderer?.dispose();
- _audioButton?.close();
- _videoButton?.close();
- localMediaStream?.dispose();
- remoteMediaStream?.dispose();
- _disposeStreamsAndSubscriptions();
- }
-
- Future _disposeStreamsAndSubscriptions() async {
- if (_onButtonBarVisibleStreamController != null) await _onButtonBarVisibleStreamController.close();
- if (_onButtonBarHeightStreamController != null) await _onButtonBarHeightStreamController.close();
- }
-
- @override
- Widget build(BuildContext context) {
- // return WillPopScope(
- // onWillPop: () async => false,
- // child: Scaffold(
- // backgroundColor: Colors.black,
- // // body: ,
- // ),
- // );
-
- return Scaffold(
- backgroundColor: Colors.white,
- body: showNoise ? _buildNoiseBox() : buildLayout(),
- );
- }
-
- LayoutBuilder buildLayout() {
- return LayoutBuilder(
- builder: (BuildContext context, BoxConstraints constraints) {
- return Stack(
- children: [
- CamViewWidget(
- localRenderer: _localRenderer,
- remoteRenderer: _remoteRenderer,
- constraints: constraints,
- onButtonBarVisibleStreamController: _onButtonBarVisibleStreamController,
- onButtonBarHeightStreamController: _onButtonBarHeightStreamController,
- ),
- ConferenceButtonBar(
- audioEnabled: _audioButton.stream,
- videoEnabled: _videoButton.stream,
- onAudioEnabled: _onAudioEnable,
- onVideoEnabled: _onVideoEnabled,
- onSwitchCamera: _onSwitchCamera,
- onHangup: _onHangup,
- onPersonAdd: () {},
- onPersonRemove: () {},
- onHeight: _onHeightBar,
- onShow: _onShowBar,
- onHide: _onHideBar,
- ),
- ],
- );
- },
- );
- }
-
- NoiseBox _buildNoiseBox() {
- return NoiseBox(
- density: NoiseBoxDensity.xLow,
- backgroundColor: Colors.grey.shade900,
- child: Center(
- child: Container(
- color: Colors.black54,
- width: double.infinity,
- height: 40,
- child: Center(
- child: Text(
- 'Waiting for another participant to connect to the call...',
- key: Key('text-wait'),
- textAlign: TextAlign.center,
- style: TextStyle(color: Colors.white),
- ),
- ),
- ),
- ),
- );
- }
-
- Function _onAudioEnable() {
- final audioTrack = localMediaStream.getAudioTracks()[0];
- final mute = audioTrack.muted;
- Helper.setMicrophoneMute(!mute, audioTrack);
- _audioButton.add(mute);
- }
-
- Function _onVideoEnabled() {
- final videoTrack = localMediaStream.getVideoTracks()[0];
- bool videoEnabled = videoTrack.enabled;
- localMediaStream.getVideoTracks()[0].enabled = !videoEnabled;
- _videoButton.add(!videoEnabled);
- }
-
- Function _onSwitchCamera() {
- Helper.switchCamera(localMediaStream.getVideoTracks()[0]);
- }
-
- void _onShowBar() {
- setState(() {
- });
- _onButtonBarVisibleStreamController.add(true);
- }
-
- void _onHeightBar(double height) {
- _onButtonBarHeightStreamController.add(height);
- }
-
- void _onHideBar() {
- setState(() {
- SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom]);
- });
- _onButtonBarVisibleStreamController.add(false);
- }
-
- Future _onHangup() async {
- signaling.hangupCall(widget.callerId, widget.receiverId);
- print('onHangup');
- Navigator.of(context).pop();
- }
-
-
-}
+// import 'dart:async';
+//
+// import 'package:diplomaticquarterapp/pages/conference/web_rtc/widgets/cam_view_widget.dart';
+// import 'package:diplomaticquarterapp/pages/conference/widgets/noise_box.dart';
+// import 'package:diplomaticquarterapp/pages/webRTC/signaling.dart';
+// import 'package:flutter/material.dart';
+// import 'package:flutter/services.dart';
+// // import 'package:flutter_webrtc/flutter_webrtc.dart';
+//
+// import '../conference_button_bar.dart';
+//
+// class CallHomePage extends StatefulWidget {
+// final String receiverId;
+// final String callerId;
+//
+// const CallHomePage({Key key, this.receiverId, this.callerId}) : super(key: key);
+//
+// @override
+// _CallHomePageState createState() => _CallHomePageState();
+// }
+//
+// class _CallHomePageState extends State {
+// bool showNoise = false;
+// // RTCVideoRenderer _localRenderer = RTCVideoRenderer();
+// // RTCVideoRenderer _remoteRenderer = RTCVideoRenderer();
+//
+// final StreamController _audioButton = StreamController.broadcast();
+// final StreamController _videoButton = StreamController.broadcast();
+// final StreamController _onButtonBarVisibleStreamController = StreamController.broadcast();
+// final StreamController _onButtonBarHeightStreamController = StreamController.broadcast();
+//
+// //Stream to enable video
+// // MediaStream localMediaStream;
+// // MediaStream remoteMediaStream;
+// Signaling signaling = Signaling()..init();
+//
+// @override
+// void initState() {
+// // TODO: implement initState
+// super.initState();
+// startCall();
+// }
+//
+// startCall() async{
+// // await _localRenderer.initialize();
+// // await _remoteRenderer.initialize();
+// }
+//
+// Future _disposeStreamsAndSubscriptions() async {
+// if (_onButtonBarVisibleStreamController != null) await _onButtonBarVisibleStreamController.close();
+// if (_onButtonBarHeightStreamController != null) await _onButtonBarHeightStreamController.close();
+// }
+//
+// @override
+// Widget build(BuildContext context) {
+// return Scaffold(
+// backgroundColor: Colors.white,
+// body: Container() //showNoise ? _buildNoiseBox() : buildLayout(),
+// );
+// }
+// }
diff --git a/lib/pages/conference/web_rtc/call_home_page_.dart b/lib/pages/conference/web_rtc/call_home_page_.dart
new file mode 100644
index 00000000..27fb5919
--- /dev/null
+++ b/lib/pages/conference/web_rtc/call_home_page_.dart
@@ -0,0 +1,186 @@
+import 'dart:async';
+
+import 'package:diplomaticquarterapp/pages/conference/web_rtc/widgets/cam_view_widget.dart';
+import 'package:diplomaticquarterapp/pages/conference/widgets/noise_box.dart';
+import 'package:diplomaticquarterapp/pages/webRTC/signaling.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
+import 'package:flutter_webrtc/flutter_webrtc.dart';
+
+import '../conference_button_bar.dart';
+
+class CallHomePage extends StatefulWidget {
+ final String receiverId;
+ final String callerId;
+
+ const CallHomePage({Key key, this.receiverId, this.callerId}) : super(key: key);
+
+ @override
+ _CallHomePageState createState() => _CallHomePageState();
+}
+
+class _CallHomePageState extends State {
+ bool showNoise = true;
+ RTCVideoRenderer _localRenderer = RTCVideoRenderer();
+ RTCVideoRenderer _remoteRenderer = RTCVideoRenderer();
+
+ final StreamController _audioButton = StreamController.broadcast();
+ final StreamController _videoButton = StreamController.broadcast();
+ final StreamController _onButtonBarVisibleStreamController = StreamController.broadcast();
+ final StreamController _onButtonBarHeightStreamController = StreamController.broadcast();
+
+ //Stream to enable video
+ MediaStream localMediaStream;
+ MediaStream remoteMediaStream;
+ Signaling signaling = Signaling()..init();
+
+ @override
+ void initState() {
+ // TODO: implement initState
+ super.initState();
+ startCall();
+ }
+
+ startCall() async{
+ await _localRenderer.initialize();
+ await _remoteRenderer.initialize();
+ final connected = await receivedCall();
+ }
+
+
+ Future receivedCall() async {
+ //Stream local media
+ localMediaStream = await navigator.mediaDevices.getUserMedia({'video': true, 'audio': true});
+ _localRenderer.srcObject = localMediaStream;
+
+ final connected = await signaling.acceptCall(widget.callerId, widget.receiverId, localMediaStream: localMediaStream, onRemoteMediaStream: (remoteMediaStream){
+ setState(() {
+ this.remoteMediaStream = remoteMediaStream;
+ _remoteRenderer.srcObject = remoteMediaStream;
+ });
+ });
+
+ if(connected){
+ signaling.signalR.listen(
+ onAcceptCall: (arg0){
+ print(arg0.toString());
+ },
+ onCandidate: (candidateJson){
+ signaling.addCandidate(candidateJson);
+ },
+ onDeclineCall: (arg0,arg1){
+ // _onHangup();
+ },
+ onHangupCall: (arg0){
+ // _onHangup();
+ },
+
+ onOffer: (offerSdp, callerUser) async{
+ print('${offerSdp.toString()} | ${callerUser.toString()}');
+ await signaling.answerOffer(offerSdp);
+ }
+ );
+ }
+ return connected;
+ }
+
+ @override
+ void dispose() {
+ // TODO: implement dispose
+ super.dispose();
+ _localRenderer?.dispose();
+ _remoteRenderer?.dispose();
+ _audioButton?.close();
+ _videoButton?.close();
+ localMediaStream?.dispose();
+ remoteMediaStream?.dispose();
+ _disposeStreamsAndSubscriptions();
+ }
+
+ Future _disposeStreamsAndSubscriptions() async {
+ if (_onButtonBarVisibleStreamController != null) await _onButtonBarVisibleStreamController.close();
+ if (_onButtonBarHeightStreamController != null) await _onButtonBarHeightStreamController.close();
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ backgroundColor: Colors.white,
+ body: buildLayout(),
+ );
+ }
+
+ LayoutBuilder buildLayout() {
+ return LayoutBuilder(
+ builder: (BuildContext context, BoxConstraints constraints) {
+ return Stack(
+ children: [
+ CamViewWidget(
+ localRenderer: _localRenderer,
+ remoteRenderer: _remoteRenderer,
+ constraints: constraints,
+ onButtonBarVisibleStreamController: _onButtonBarVisibleStreamController,
+ onButtonBarHeightStreamController: _onButtonBarHeightStreamController,
+ ),
+ ConferenceButtonBar(
+ audioEnabled: _audioButton.stream,
+ videoEnabled: _videoButton.stream,
+ onAudioEnabled: _onAudioEnable,
+ onVideoEnabled: _onVideoEnabled,
+ onSwitchCamera: _onSwitchCamera,
+ onHangup: _onHangup,
+ onPersonAdd: () {},
+ onPersonRemove: () {},
+ onHeight: _onHeightBar,
+ onShow: _onShowBar,
+ onHide: _onHideBar,
+ ),
+ ],
+ );
+ },
+ );
+ }
+
+ Function _onAudioEnable() {
+ final audioTrack = localMediaStream.getAudioTracks()[0];
+ final mute = audioTrack.muted;
+ Helper.setMicrophoneMute(!mute, audioTrack);
+ _audioButton.add(mute);
+ }
+
+ Function _onVideoEnabled() {
+ final videoTrack = localMediaStream.getVideoTracks()[0];
+ bool videoEnabled = videoTrack.enabled;
+ localMediaStream.getVideoTracks()[0].enabled = !videoEnabled;
+ _videoButton.add(!videoEnabled);
+ }
+
+ Function _onSwitchCamera() {
+ Helper.switchCamera(localMediaStream.getVideoTracks()[0]);
+ }
+
+ void _onShowBar() {
+ setState(() {
+ });
+ _onButtonBarVisibleStreamController.add(true);
+ }
+
+ void _onHeightBar(double height) {
+ _onButtonBarHeightStreamController.add(height);
+ }
+
+ void _onHideBar() {
+ setState(() {
+ SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom]);
+ });
+ _onButtonBarVisibleStreamController.add(false);
+ }
+
+ Future _onHangup() async {
+ signaling.hangupCall(widget.callerId, widget.receiverId);
+ print('onHangup');
+ Navigator.of(context).pop();
+ }
+
+
+}
diff --git a/lib/pages/conference/web_rtc/widgets/cam_view_widget.dart b/lib/pages/conference/web_rtc/widgets/cam_view_widget.dart
index d27dad55..c652cacc 100644
--- a/lib/pages/conference/web_rtc/widgets/cam_view_widget.dart
+++ b/lib/pages/conference/web_rtc/widgets/cam_view_widget.dart
@@ -1,6 +1,7 @@
import 'dart:async';
import 'dart:core';
+import 'package:diplomaticquarterapp/pages/conference/widgets/noise_box.dart';
import 'package:flutter/material.dart';
import 'package:flutter_webrtc/flutter_webrtc.dart';
@@ -36,19 +37,46 @@ class _CamViewWidgetState extends State {
FractionallySizedBox(
heightFactor: 1, widthFactor: 1,
child: Container(
- child: RTCVideoView(widget.remoteRenderer, mirror: true),
+ color: Colors.black87,
+ child: RTCVideoView(widget.remoteRenderer, mirror: true,filterQuality: FilterQuality.medium,),
),
),
+
+ if(widget.remoteRenderer.srcObject == null)
+ Positioned.fill(child: _buildNoiseBox()),
+
+ Positioned.fill(
+ child: RTCVideoView(widget.remoteRenderer)
+ ),
+
DraggableCam(
key: Key('publisher'),
onButtonBarHeight: widget.onButtonBarHeightStreamController.stream,
onButtonBarVisible: widget.onButtonBarVisibleStreamController.stream,
availableScreenSize: widget.constraints.biggest,
- child: RTCVideoView(widget.localRenderer),
+ child: RTCVideoView(widget.localRenderer)
),
- // Expanded(child: RTCVideoView(widget.remoteRenderer)),
+
+ if(widget.remoteRenderer.srcObject == null)
+ Container(
+ margin: EdgeInsets.all(MediaQuery.of(context).size.width/8),
+ child: Text(
+ 'Waiting for another participant to connect to the call...',
+ key: Key('text-wait'),
+ textAlign: TextAlign.center,
+ style: TextStyle(color: Colors.white),
+ )
+ ),
],
),
);
}
+
+
+ Widget _buildNoiseBox() {
+ return NoiseBox(
+ density: NoiseBoxDensity.xHigh,
+ backgroundColor: Colors.grey.shade900,
+ );
+ }
}
diff --git a/lib/pages/landing/landing_page.dart b/lib/pages/landing/landing_page.dart
index efe9f031..f73172b6 100644
--- a/lib/pages/landing/landing_page.dart
+++ b/lib/pages/landing/landing_page.dart
@@ -27,6 +27,7 @@ import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/location_util.dart';
import 'package:diplomaticquarterapp/uitl/navigation_service.dart';
+import 'package:diplomaticquarterapp/uitl/push-notification-handler.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/bottom_navigation/bottom_nav_bar.dart';
import 'package:diplomaticquarterapp/widgets/buttons/floatingActionButton.dart';
@@ -44,6 +45,7 @@ import 'package:provider/provider.dart';
import '../../locator.dart';
import '../../routes.dart';
+
class LandingPage extends StatefulWidget {
static LandingPage shared;
_LandingPageState state;
@@ -197,37 +199,11 @@ class _LandingPageState extends State with WidgetsBindingObserver {
void didChangeAppLifecycleState(AppLifecycleState state) {
super.didChangeAppLifecycleState(state);
- var route = ModalRoute.of(context);
-
- if (route != null) {}
-
- //setState(() {
AppGlobal.context = context;
if (state == AppLifecycleState.resumed) {
- if (LandingPage.isOpenCallPage) {
- if (Platform.isAndroid) {
- return;
- }
- if (!isPageNavigated) {
- isPageNavigated = true;
- Navigator.push(context, MaterialPageRoute(builder: (context) => IncomingCall(incomingCallData: LandingPage.incomingCallData))).then((value) {
- Future.delayed(Duration(seconds: 5), () {
- isPageNavigated = false;
- });
- });
- }
- }
+ PushNotificationHandler.getInstance().onResume();
sharedPref.remove(APPOINTMENT_HISTORY_MEDICAL);
}
-
- if (state == AppLifecycleState.paused) {
- isPageNavigated = false;
- }
-
- if (state == AppLifecycleState.inactive) {
- isPageNavigated = false;
- }
- //});
}
@override
@@ -239,6 +215,7 @@ class _LandingPageState extends State with WidgetsBindingObserver {
@override
void initState() {
super.initState();
+ PushNotificationHandler.getInstance().onResume();
WidgetsBinding.instance.addObserver(this);
AppGlobal.context = context;
@@ -247,14 +224,11 @@ class _LandingPageState extends State with WidgetsBindingObserver {
pageController = PageController(keepPage: true);
_firebaseMessaging.setAutoInitEnabled(true);
- // signalRUtil = new SignalRUtil(hubName: "https://VCallApi.hmg.com/WebRTCHub?source=mobile&username=2001273", context: context);
-
locationUtils = new LocationUtils(isShowConfirmDialog: false, context: context);
WidgetsBinding.instance.addPostFrameCallback((_) {
if (projectViewModel.isLogin && !projectViewModel.isLoginChild) {
familyFileProvider.getSharedRecordByStatus();
}
- // if (!signalRUtil.getConnectionState()) signalRUtil.startSignalRConnection();
});
// HMG (Guest/Internet) Wifi Access [Zohaib Kambrani]
//for now commented to reduce this call will enable it when needed
@@ -263,10 +237,6 @@ class _LandingPageState extends State with WidgetsBindingObserver {
// PlatformBridge().connectHMGGuestWifi().then((value) => {GifLoaderDialogUtils.hideDialog(context)});
// }).checkAndConnectIfNoInternet();
- if (Platform.isIOS) {
- _firebaseMessaging.requestPermission();
- }
-
requestPermissions().then((results) {
locationUtils.getCurrentLocation();
_firebaseMessaging.getToken().then((String token) {
@@ -277,8 +247,6 @@ class _LandingPageState extends State with WidgetsBindingObserver {
if (!projectViewModel.isLoginChild) {
checkUserStatus(token);
}
-
- // if (projectViewModel.isLogin) this.getNotificationCount(DEVICE_TOKEN);
}
});
if (results[Permission.location].isGranted) {}
@@ -288,180 +256,7 @@ class _LandingPageState extends State with WidgetsBindingObserver {
// if (results[Permission.accessMediaLocation].isGranted) ;
// if (results[Permission.calendar].isGranted) ;
});
- // });
- FirebaseMessaging.onMessage.listen((RemoteMessage message) async {
- print("onMessage: $message");
- print(message);
- print(message.data['name']);
- print(message.data['appointmentdate']);
-
- if (Platform.isIOS) {
- if (message.data['is_call'] == "true") {
- var route = ModalRoute.of(context);
-
- if (route != null) {
- print(route.settings.name);
- }
- Map myMap = new Map.from(message.data);
- print(myMap);
- LandingPage.isOpenCallPage = true;
- LandingPage.incomingCallData = IncomingCallData.fromJson(myMap);
- if (!isPageNavigated) {
- isPageNavigated = true;
- Navigator.push(context, MaterialPageRoute(builder: (context) => IncomingCall(incomingCallData: LandingPage.incomingCallData))).then((value) {
- isPageNavigated = false;
- });
- }
- } else {
- print("Is Call Not Found iOS");
- }
- } else {
- print("Is Call Not Found iOS");
- }
-
- if (Platform.isAndroid) {
- print("messagedata:${message}");
- print("messagedata:${message.data}");
- if (message.data.containsKey("is_call")) {
- var route = ModalRoute.of(context);
-
- if (route != null) {
- print(route.settings.name);
- }
-
- Map myMap = new Map.from(message.data);
- print(myMap);
- if (LandingPage.isOpenCallPage) {
- return;
- }
- LandingPage.isOpenCallPage = true;
- LandingPage.incomingCallData = IncomingCallData.fromJson(myMap);
- if (!isPageNavigated) {
- isPageNavigated = true;
- Navigator.push(context, MaterialPageRoute(builder: (context) => IncomingCall(incomingCallData: LandingPage.incomingCallData))).then((value) {
- Future.delayed(Duration(seconds: 5), () {
- isPageNavigated = false;
- });
- });
- }
- } else {
- print("Is Call Not Found Android");
- LocalNotification.getInstance().showNow(title: message.data['notification']['title'], subtitle: message.data['notification']['body']);
- }
- } else {
- print("Is Call Not Found Android");
- }
- });
- FirebaseMessaging.onBackgroundMessage((message) {
- return Platform.isIOS ? null : myBackgroundMessageHandler(message.data);
- });
-
- // todo verify all functionality
-
- // _firebaseMessaging.configure(
- // // onMessage: (Map message) async {
- // // // showDialog("onMessage: $message");
- // // print("onMessage: $message");
- // // print(message);
- // // print(message['name']);
- // // print(message['appointmentdate']);
- // //
- // // if (Platform.isIOS) {
- // // if (message['is_call'] == "true") {
- // // var route = ModalRoute.of(context);
- // //
- // // if (route != null) {
- // // print(route.settings.name);
- // // }
- // //
- // // Map myMap = new Map.from(message);
- // // print(myMap);
- // // LandingPage.isOpenCallPage = true;
- // // LandingPage.incomingCallData = IncomingCallData.fromJson(myMap);
- // // if (!isPageNavigated) {
- // // isPageNavigated = true;
- // // Navigator.push(context, MaterialPageRoute(builder: (context) => IncomingCall(incomingCallData: LandingPage.incomingCallData))).then((value) {
- // // isPageNavigated = false;
- // // });
- // // }
- // // } else {
- // // print("Is Call Not Found iOS");
- // // }
- // // } else {
- // // print("Is Call Not Found iOS");
- // // }
- // //
- // // if (Platform.isAndroid) {
- // // if (message['data'].containsKey("is_call")) {
- // // var route = ModalRoute.of(context);
- // //
- // // if (route != null) {
- // // print(route.settings.name);
- // // }
- // //
- // // Map myMap = new Map.from(message['data']);
- // // print(myMap);
- // // if (LandingPage.isOpenCallPage) {
- // // return;
- // // }
- // // LandingPage.isOpenCallPage = true;
- // // LandingPage.incomingCallData = IncomingCallData.fromJson(myMap);
- // // if (!isPageNavigated) {
- // // isPageNavigated = true;
- // // Navigator.push(context, MaterialPageRoute(builder: (context) => IncomingCall(incomingCallData: LandingPage.incomingCallData))).then((value) {
- // // Future.delayed(Duration(seconds: 5), () {
- // // isPageNavigated = false;
- // // });
- // // });
- // // }
- // // } else {
- // // print("Is Call Not Found Android");
- // // LocalNotification.getInstance().showNow(title: message['notification']['title'], subtitle: message['notification']['body']);
- // // }
- // // } else {
- // // print("Is Call Not Found Android");
- // // }
- // // },
- // onBackgroundMessage: Platform.isIOS ? null : myBackgroundMessageHandler,
- // onLaunch: (Map message) async {
- // print("onLaunch: $message");
- // // showDialog("onLaunch: $message");
- // },
- // onResume: (Map message) async {
- // print("onResume: $message");
- // print(message);
- // print(message['name']);
- // print(message['appointmentdate']);
- //
- // // showDialog("onResume: $message");
- //
- // if (Platform.isIOS) {
- // if (message['is_call'] == "true") {
- // var route = ModalRoute.of(context);
- //
- // if (route != null) {
- // print(route.settings.name);
- // }
- //
- // Map myMap = new Map.from(message);
- // print(myMap);
- // LandingPage.isOpenCallPage = true;
- // LandingPage.incomingCallData = IncomingCallData.fromJson(myMap);
- // if (!isPageNavigated) {
- // isPageNavigated = true;
- // Navigator.push(context, MaterialPageRoute(builder: (context) => IncomingCall(incomingCallData: LandingPage.incomingCallData))).then((value) {
- // isPageNavigated = false;
- // });
- // }
- // } else {
- // print("Is Call Not Found iOS");
- // }
- // } else {
- // print("Is Call Not Found iOS");
- // }
- // },
- // );
}
Future