Connect IQ iOS Mobile SDK 1.4 beta 1

We have published a new iOS Mobile SDK beta, used to build mobile companion apps for Connect IQ apps on iOS, with the following changes:

  • Package the library as an XCFramework
  • Removed stripSimulatorSlice.sh script
  • Enabled bitcode in framework

This SDK can be downloaded from https://developer.garmin.com/downloads/connect-iq/sdks/ConnectIQ_iOS_SDK_1_4_beta1.zip. If you use this SDK and encounter any issues please reply back to this thread with the details.

Thanks!

  • Thanks for updating the iOS Mobile SDK. I created a Swift sample project at https://github.com/nathanschile/GarminTester that utilized the XCFramework. I am able to initialize the library, however when I call ConnectIQ.showDeviceSelection(), GCM launches, but GCM never calls the URL with the scheme registered in initializeWithUrlScheme with the selected devices. I believe I've followed the steps outlined in the included SDK guide to setup an application. Is there any additional configuration the needs to be completed for the URL callback to occur? Thanks.

  • Some initial feedback:

    •  The SDK does not support iOS scenes. If you are creating a new application with XCode 11, the default is for the application to use scenes. If scenes were present in the application, the following error would occur

    2020-02-14 21:23:00.339797-0600 GarminTester[1285:166168] -canOpenURL: failed for URL: "gcm-ciq://device-select-req?ciqApp=GarminTester&ciqBundle=com.example.GarminTester&ciqScheme=garmintester&ciqSdkVersion=10000" - error: "The operation couldn’t be completed. (OSStatus error -10814.)"

    2020-02-14 21:23:00.350603-0600 GarminTester[1285:166168] *** Terminating app due to uncaught exception 'NSObjectNotAvailableException', reason: 'UIAlertView is deprecated and unavailable for UIScene based applications, please use UIAlertController!'

                 I was able to remove the scene code from my project to get the SDK to work.

    • Update the SDK documentation to have setting CFBundleDisplayName as a separate bullet point under Configuring a project to use the Mobile SDK
    • Consider changing the code examples in the SDK documentation and example project to Swift. 

    Again, thank you for updating the iOS Mobile SDK! 

                

  • Thanks for the feedback--I'll get this reported and see what we want to do to address these. At the very least, we can update the documentation to lead people around these roadblocks. Slight smile

  • Thank you for updating this SDK! It fits much more nicely into the iOS development flow now Smile

    Briefly tested integration in our project and installation instructions worked as expected. We will continue testing it and report back any issues. 

    If I had one suggestion it is to add a section about migrating from the old version of the SDK - you need to remember to remove the slicing script step from your "Build Phases" otherwise you get an obscure Carthage error.

  • Hello,

    After following the instructions I was able to run my iOS app in the simulator, however when running it on a real device I get the following error and I can't seem to figure out why:

    dyld: Library not loaded: @rpath/ConnectIQ.framework/ConnectIQ

      Referenced from: /private/var/containers/Bundle/Application/0A8F995E-D808-485E-8CFD-753E00281646/GarminTestApp.app/GarminTestApp

      Reason: no suitable image found.  Did find:

        /private/var/containers/Bundle/Application/0A8F995E-D808-485E-8CFD-753E00281646/GarminTestApp.app/Frameworks/ConnectIQ.framework/ConnectIQ: code signature invalid for '/private/var/containers/Bundle/Application/0A8F995E-D808-485E-8CFD-753E00281646/GarminTestApp.app/Frameworks/ConnectIQ.framework/ConnectIQ'

        /private/var/containers/Bundle/Application/0A8F995E-D808-485E-8CFD-753E00281646/GarminTestApp.app/Frameworks/ConnectIQ.framework/ConnectIQ: stat() failed with errno=25

  • SOLVED.

    This is an issue with iOS 13.3.1. All dynamic frameworks being compiled to the newest release of iOS 13.3.1 are experiencing this issue when running on a personal provisioning profile/developer account.

    You can:

    Use a non-Personal Team provisioning profile (paid developer account). Run on the 13.3.1 simulator. Test on a real iOS device running 13.3 or lower. This issue will be fixed in 13.4 Beta version though.