awslabs / aws-mobile-appsync-sdk-ios

iOS SDK for AWS AppSync.
https://awslabs.github.io/aws-mobile-appsync-sdk-ios/
Other
262 stars 128 forks source link

Built app with Xcode 15.2 crashes after AppSyncClient subscribe on iOS 16.3.1 version or lower #587

Closed CJblaze2022 closed 5 months ago

CJblaze2022 commented 6 months ago

Describe the bug

We were working with Xcode 14.3.1 and made all the configurations to integrate appSync in our project, everything works as expected.

Recently we updated Xcode to 15.2 and the app crashes and stop working after AppSyncClient subscribe and shows EXC_BAD_ACCESS, we don't have crashes with iOS 16.6 devices or higher, crash occurs with lower iOS versions like 16.3.1, 16.1.1, 15.5, etc.

We used 3.1.2 Appsync version for our setting up, we tried with 3.6.4 and issue continues.

Currently we went back to Xcode 14.3.1 to deliver builds into TestFlight, now we are facing this apple warning (this is the reason why we switch from Xcode 14.3.1 to 15.2).

image

To Reproduce

call subscribe method for AppSyncClient.

Expected behavior

Call subscribe method for AppSyncClient without crash for devices with iOS 16.3.1 version or lower.

Screenshots

mage

Environment(please complete the following information):

Device Information (please complete the following information):

Additional context

There is a related issue for amplify-flutter and it wasn't solved yet https://github.com/aws-amplify/amplify-flutter/issues/4195

ruisebas commented 6 months ago

Hi @CJblaze2022, thanks for opening this issue.

From what I found online, this crash happens when attempting to use NWPathMonitor on builds created using Xcode 15 and targeting iOS versions lower than 12, and it only seems to affect CocoaPods.

As a quick fix, you can update both AppSyncRealTimeClient and AWSAppSync targets in your Pods project to use iOS 12.0 as the Minimum Deployment version: ios12

Note that this will be overwritten every time you do a pod install or pod update, so if you wish to avoid that you can instead add a post-install script to your Podfile:

  post_install do |installer|   
    installer.pods_project.targets.each do |target|
      if target.name  == "AWSAppSync" || target.name  == "AppSyncRealTimeClient"
        target.build_configurations.each do |config|
          config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
        end
      end
    end
  end

We're already working on bumping the minimum deployments for these pods to iOS 12:

Once these are merged and released, you won't need to manually update anything. We'll post an update here once that's done.

CJblaze2022 commented 6 months ago

hi @ruisebas so sorry for the late response, we were testing you solution (it is not easy to find iOS 15 and 16 devices 😅), we changed our minimum deployment from 11.4 to 12.0 and it solved the issue. Many thanks for your support! 🙌🏼

ruisebas commented 5 months ago

AppSync SDK 3.7.0 and AppSyncRealTimeClient 3.2.0 have been released bumping the minimum deployment target to iOS 12. Please upgrade your dependencies to the latest versions. Thanks!

github-actions[bot] commented 5 months ago

This issue is now closed. Comments on closed issues are hard for our team to see. If you need more assistance, please open a new issue that references this one. If you wish to keep having a conversation with other community members under this issue feel free to do so.