From f7a3246f392e24537f222c73039695268148ab47 Mon Sep 17 00:00:00 2001 From: bazl-E Date: Thu, 27 Jun 2024 16:59:56 +0530 Subject: [PATCH 1/5] fix(call account):one plus call account setting is missing --- .../com/twilio/twilio_voice/types/TelecomManagerExtension.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/src/main/kotlin/com/twilio/twilio_voice/types/TelecomManagerExtension.kt b/android/src/main/kotlin/com/twilio/twilio_voice/types/TelecomManagerExtension.kt index 76f251c5..2bbf7817 100644 --- a/android/src/main/kotlin/com/twilio/twilio_voice/types/TelecomManagerExtension.kt +++ b/android/src/main/kotlin/com/twilio/twilio_voice/types/TelecomManagerExtension.kt @@ -60,7 +60,7 @@ object TelecomManagerExtension { } fun TelecomManager.openPhoneAccountSettings(activity: Activity) { - if (Build.MANUFACTURER.equals("Samsung", ignoreCase = true)) { + if (Build.MANUFACTURER.equals("Samsung", ignoreCase = true)|| Build.MANUFACTURER.equals("OnePlus", ignoreCase = true)) { try { val intent = Intent(TelecomManager.ACTION_CHANGE_PHONE_ACCOUNTS) intent.component = ComponentName( From 831f56da22732157e2bde4fbac08ed2f9cda07d5 Mon Sep 17 00:00:00 2001 From: bazl-E Date: Wed, 17 Jul 2024 19:04:47 +0530 Subject: [PATCH 2/5] feat: Preserve device token for VoIP push notifications Preserve the device token for VoIP push notifications to avoid the need for users to restart the app to obtain a new device token. Removing the device token from UserDefaults caused registration failures. fix : IOS not displaying caller number if the user doesn't set a default caller name it will display the incoming caller number , if the already set a value user has to call [await TwilioVoice.instance.setDefaultCallerName('');] to make this work --- ios/Classes/SwiftTwilioVoicePlugin.swift | 31 ++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/ios/Classes/SwiftTwilioVoicePlugin.swift b/ios/Classes/SwiftTwilioVoicePlugin.swift index 0a324c55..53a9279b 100644 --- a/ios/Classes/SwiftTwilioVoicePlugin.swift +++ b/ios/Classes/SwiftTwilioVoicePlugin.swift @@ -495,7 +495,10 @@ public class SwiftTwilioVoicePlugin: NSObject, FlutterPlugin, FlutterStreamHand self.sendPhoneCallEvents(description: "LOG|Successfully unregistered from VoIP push notifications.", isError: false) } } - UserDefaults.standard.removeObject(forKey: kCachedDeviceToken) + + //DO NOT REMOVE DEVICE TOKEN , AS IT IS UNNECESSARY AND USER WILL HAVE TO RESTART THE APP TO GET NEW DEVICE TOKEN + //IF WE REMOVED FROM HERE , WHICH WILL CAUSE TO FAILURE IN REGISTRATION +// UserDefaults.standard.removeObject(forKey: kCachedDeviceToken) // Remove the cached binding as credentials are invalidated UserDefaults.standard.removeObject(forKey: kCachedBindingDate) @@ -870,7 +873,8 @@ public class SwiftTwilioVoicePlugin: NSObject, FlutterPlugin, FlutterStreamHand let callUpdate = CXCallUpdate() callUpdate.remoteHandle = callHandle - callUpdate.localizedCallerName = clients[from] ?? self.clients["defaultCaller"] ?? defaultCaller + // If the client is not registered, USE THE THE FROM NUMBER + callUpdate.localizedCallerName = clients[from] ?? self.clients["defaultCaller"] ?? formatUSPhoneNumber(from) callUpdate.supportsDTMF = true callUpdate.supportsHolding = true callUpdate.supportsGrouping = false @@ -886,6 +890,29 @@ public class SwiftTwilioVoicePlugin: NSObject, FlutterPlugin, FlutterStreamHand } } + // Format the phone number to US format if it is a valid US number else return the number as is + func formatUSPhoneNumber(_ number: String) -> String { + // Ensure the number starts with "+1" and has exactly 12 characters + guard number.hasPrefix("+1"), number.count == 12 else { + return number + } + + // Extract the digits after "+1" + let digits = number.suffix(10) + + // Check if all characters are digits + guard digits.allSatisfy({ $0.isNumber }) else { + return number + } + + // Format the number + let areaCode = digits.prefix(3) + let middle = digits.dropFirst(3).prefix(3) + let last = digits.suffix(4) + + return "+1 (\(areaCode)) \(middle)-\(last)" + } + func performEndCallAction(uuid: UUID) { self.sendPhoneCallEvents(description: "LOG|performEndCallAction method invoked", isError: false) From 257303be75b6ea39ab9e004e18a740bccbda8d21 Mon Sep 17 00:00:00 2001 From: bazl-E Date: Wed, 17 Jul 2024 19:31:06 +0530 Subject: [PATCH 3/5] chore: Remove unnecessary missed call notification code --- ios/Classes/SwiftTwilioVoicePlugin.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ios/Classes/SwiftTwilioVoicePlugin.swift b/ios/Classes/SwiftTwilioVoicePlugin.swift index 53a9279b..88c87805 100644 --- a/ios/Classes/SwiftTwilioVoicePlugin.swift +++ b/ios/Classes/SwiftTwilioVoicePlugin.swift @@ -583,7 +583,8 @@ public class SwiftTwilioVoicePlugin: NSObject, FlutterPlugin, FlutterStreamHand public func cancelledCallInviteReceived(cancelledCallInvite: CancelledCallInvite, error: Error) { self.sendPhoneCallEvents(description: "Missed Call", isError: false) self.sendPhoneCallEvents(description: "LOG|cancelledCallInviteCanceled:", isError: false) - self.showMissedCallNotification(from: cancelledCallInvite.from, to: cancelledCallInvite.to) + //no need to notification for easify + // self.showMissedCallNotification(from: cancelledCallInvite.from, to: cancelledCallInvite.to) if (self.callInvite == nil) { self.sendPhoneCallEvents(description: "LOG|No pending call invite", isError: false) return From d326ac4c1bebed4c3ef46c20adb37503ace9fb28 Mon Sep 17 00:00:00 2001 From: bazl-E Date: Wed, 17 Jul 2024 20:02:03 +0530 Subject: [PATCH 4/5] feat: Update localized caller name handling Update the handling of the localized caller name in the `SwiftTwilioVoicePlugin.swift` file. Instead of using the `clients` dictionary to retrieve the caller name, always use the `formatUSPhoneNumber` function to format the caller's phone number. This ensures consistency and avoids potential issues with missing or incorrect caller names. Note: This commit message follows the established convention of starting with a verb in the imperative form, followed by a concise description of the changes made. --- ios/Classes/SwiftTwilioVoicePlugin.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/Classes/SwiftTwilioVoicePlugin.swift b/ios/Classes/SwiftTwilioVoicePlugin.swift index 88c87805..2161749a 100644 --- a/ios/Classes/SwiftTwilioVoicePlugin.swift +++ b/ios/Classes/SwiftTwilioVoicePlugin.swift @@ -875,7 +875,7 @@ public class SwiftTwilioVoicePlugin: NSObject, FlutterPlugin, FlutterStreamHand let callUpdate = CXCallUpdate() callUpdate.remoteHandle = callHandle // If the client is not registered, USE THE THE FROM NUMBER - callUpdate.localizedCallerName = clients[from] ?? self.clients["defaultCaller"] ?? formatUSPhoneNumber(from) + callUpdate.localizedCallerName = formatUSPhoneNumber(from) callUpdate.supportsDTMF = true callUpdate.supportsHolding = true callUpdate.supportsGrouping = false From b80355235e36f2828456f680dabf1a64bb6eabbf Mon Sep 17 00:00:00 2001 From: bazl-E Date: Thu, 12 Sep 2024 17:45:46 +0530 Subject: [PATCH 5/5] chore: Update TwilioVoice dependency versions --- android/build.gradle | 2 +- example/ios/Runner.xcodeproj/project.pbxproj | 96 ++++++++++++-------- ios/twilio_voice.podspec | 2 +- 3 files changed, 59 insertions(+), 41 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 39922de5..2c321970 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -56,7 +56,7 @@ android { dependencies { implementation(platform("org.jetbrains.kotlin:kotlin-bom:$kotlin_version")) implementation(platform("com.google.firebase:firebase-bom:32.2.2")) - implementation("com.twilio:voice-android:6.3.2") + implementation("com.twilio:voice-android:6.6.4") implementation("com.google.firebase:firebase-messaging-ktx:23.2.1") implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.lifecycle:lifecycle-process:2.6.1' diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index dbd89bb9..4577b8a3 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -3,12 +3,12 @@ archiveVersion = 1; classes = { }; - objectVersion = 51; + objectVersion = 50; objects = { /* Begin PBXBuildFile section */ + 03CB5A298F020DFEF5C15BF9 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 05447BA51642A37726BD13F6 /* Pods_Runner.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 31921B64B8BFB1D14D5B3FD8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D4B6D8E27AE1C4FFBA3F93FB /* Pods_Runner.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; @@ -32,14 +32,15 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 05447BA51642A37726BD13F6 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 0FD3BBD256FE4A9D5485441A /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 11DC5E9496FA4567BF18955B /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 459910D105676AEA61D927D4 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 842FBBAEA17BDB340A4F1B1A /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -47,8 +48,7 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - A1A5B7F7A8766107BD0F93D1 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - D4B6D8E27AE1C4FFBA3F93FB /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D081A7677F6E275D726CDCC0 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; F112FE34262881BD00CD6B41 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; F18CB62F25F2968500653E8A /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = ""; }; F1DAF69F2624E5BF00652032 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; @@ -60,17 +60,17 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 31921B64B8BFB1D14D5B3FD8 /* Pods_Runner.framework in Frameworks */, + 03CB5A298F020DFEF5C15BF9 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0E04F9C8A2F4C5BDEBF53455 /* Frameworks */ = { + 3F251483BF6591EB5D9A52FE /* Frameworks */ = { isa = PBXGroup; children = ( - D4B6D8E27AE1C4FFBA3F93FB /* Pods_Runner.framework */, + 05447BA51642A37726BD13F6 /* Pods_Runner.framework */, ); name = Frameworks; sourceTree = ""; @@ -78,9 +78,9 @@ 8070562AC07E27A0A2D66AC1 /* Pods */ = { isa = PBXGroup; children = ( - 459910D105676AEA61D927D4 /* Pods-Runner.debug.xcconfig */, - A1A5B7F7A8766107BD0F93D1 /* Pods-Runner.release.xcconfig */, - 842FBBAEA17BDB340A4F1B1A /* Pods-Runner.profile.xcconfig */, + 0FD3BBD256FE4A9D5485441A /* Pods-Runner.debug.xcconfig */, + 11DC5E9496FA4567BF18955B /* Pods-Runner.release.xcconfig */, + D081A7677F6E275D726CDCC0 /* Pods-Runner.profile.xcconfig */, ); path = Pods; sourceTree = ""; @@ -103,7 +103,7 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 8070562AC07E27A0A2D66AC1 /* Pods */, - 0E04F9C8A2F4C5BDEBF53455 /* Frameworks */, + 3F251483BF6591EB5D9A52FE /* Frameworks */, ); sourceTree = ""; }; @@ -140,14 +140,15 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 4BF2D767FFDDA6DFF200B4DE /* [CP] Check Pods Manifest.lock */, + DEDD89877982A2AF7CD3C3DA /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - E523679BDB4BF3E08E047D74 /* [CP] Embed Pods Frameworks */, + 2C0550190AA281E4DABEDF6E /* [CP] Embed Pods Frameworks */, + BBC5A4627D503F8C23DDACC1 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -209,41 +210,36 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 2C0550190AA281E4DABEDF6E /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); - inputPaths = ( + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "Thin Binary"; - outputPaths = ( + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; }; - 4BF2D767FFDDA6DFF200B4DE /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -259,21 +255,43 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - E523679BDB4BF3E08E047D74 /* [CP] Embed Pods Frameworks */ = { + BBC5A4627D503F8C23DDACC1 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Embed Pods Frameworks"; + name = "[CP] Copy Pods Resources"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + DEDD89877982A2AF7CD3C3DA /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -381,7 +399,7 @@ DEVELOPMENT_TEAM = 366269TEN6; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -514,7 +532,7 @@ DEVELOPMENT_TEAM = 366269TEN6; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -539,7 +557,7 @@ DEVELOPMENT_TEAM = 366269TEN6; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", diff --git a/ios/twilio_voice.podspec b/ios/twilio_voice.podspec index d6fe4541..b3c16be1 100644 --- a/ios/twilio_voice.podspec +++ b/ios/twilio_voice.podspec @@ -15,7 +15,7 @@ Pod::Spec.new do |s| s.source = { :path => '.' } s.source_files = 'Classes/**/*' s.dependency 'Flutter' - s.dependency 'TwilioVoice','~> 6.9.1' + s.dependency 'TwilioVoice','~> 6.11.3' s.platform = :ios, '11.0' # Flutter.framework does not contain a i386 slice.