• Garmin introduces the D2 Air X10

    Today, Garmin announced the new D2Tm Air X10, a new aviation wearable using API level 4.0.0.

    Navigate your day with D2 Air X10. This GPS aviator smartwatch has piloting tools you’ll want preflight, in-flight and postflight. And it offers advanced health and fitness features to help you track your wellness — plus keep you connected between flights.

    Use the SDK Manager to update your device library to add D2 Air X10 support to your apps.

    • Feb 8, 2022
  • Moving from Eclipse to Visual Studio Code

    Developers live and die by their tools. A development environment for a software developer is like a video editing suite to a video editor; it's the tool of creation. Any change in that tooling can be very disruptive when you're familiar with what you have.

    For those of you who have used the Eclipse environment over the past few years, Visual Studio Code can be an adjustment. In developing the new extension, we have taken the philosophy of trying to make something that would feel natural to a Visual Studio Code user. This can be alienating to developers moving from Eclipse, which has its own philosophy and approach. Though we are continuing to maintain the Eclipse solution, any new features going forward will only go to the Visual Studio Extension.

    Let’s talk through some of the changes between Eclipse versus Visual Studio Code, and how the two environments are the same but different.

    Projects, Workspaces, Folders, and Windows

    In Eclipse, the workspace is set at startup and is the directory on disk where your projects and your Eclipse settings live. You cannot change your workspace folder without restarting Eclipse. A project is a collection of related resources, but the Monkey C plugin usually represents the root folder of a source code tree. While you can have just one project in your workspace, it is more common to have multiple (even unrelated) projects all within the same workspace.

    In Visual Studio Code, a window is an instance of the Visual Studio code environment. A folder is the root directory of a collection of related resources, but with the Monkey C extension a folder usually represents the root folder of a Monkey C source code tree. A project is a collection of folders but is not a subdirectory on the file system like in Eclipse. It is very common in Visual Studio code for a single project to have its own workspace, but it is also possible to have multiple folders in a workspace. You can have multiple windows editing multiple projects with multiple folders open at the same time.

    Eclipse has a feature of linked folders, where a source folder can be soft-linked into a project. The Visual Studio Code extension does not mimic this feature, but you can add paths to the sourcePath or resourcePath of base in your jungle file to bring in folders. See the Jungle Reference Guide for details.

    Workspace Settings Versus Project Settings

    In the Eclipse plug-in there are two sets of settings: workspace settings and project settings. The workspace settings allow configuring the plugin. You can also edit the project settings for a Connect IQ project itself.

    Visual Studio Code also has a separation of extension settings and folder settings. The extension settings allow for configuration of how the extension interfaces with the SDK, while the folder settings allow configuring the jungle, manifest, and type check level for the folder.

    Connect IQ Menus Versus Command Palettes

    The Eclipse plug-in adds extra Connect IQ specific options by adding a Connect IQ menu to the Connect IQ perspective:

    With the Monkey C extension, the commands have been added to the command palette, which can be summoned with Ctrl + Shift + P (or Command + Shift + P on the Mac). You can see all the extension commands by typing “Monkey C”:

    The command palette auto-complete filters on all words in the command, allowing quick access to tools.

    Manifest Editing

    One of the most important files in the Connect IQ project is the manifest.xml file, which provides important metadata like the supported products, app type, and permissions. In the Eclipse plug-in, there is a special editor that breaks down the manifest into its component parts.

    With the Monkey C extension, you can use the following commands to edit the manifest:

     

    COMMAND

    DESCRIPTION

    Monkey C: Edit Products

    Edits the products in the manifest.xml; only allows selecting products that support the minimum SDK version

    Monkey C: Edit Permissions

    Edits the permissions in the manifest.xml

    Monkey C: Edit Languages

    Edits the languages in the manifest.xml

    Monkey C: Edit Application

    Edits the application metadata (name, label, identifier) in the manifest.xml

    Monkey C: Configure Barrel

    Wizard to add or remove Monkey Barrels from your project

    Monkey C: Set Products by Connect IQ Version

    Allows mass selection of all products that meet a Connect IQ version

    Monkey C: Edit Annotations

    Allows adding new annotations to Monkey Barrel projects

    Monkey C: Regenerate UUID

    Creates a new application UUID for your project

     

    Documentation and Tools

    The Eclipse plug-in Connect IQ offered links to the Connect IQ SDK documentation and tools. The Monkey C extension does as well via the following commands:

    COMMAND

    DESCRIPTION

    Monkey C: Open ERA Viewer

    Opens the Error Reporting Application tool

    Monkey C: Open Monkey Graph

    Opens the Monkey Graph tool

    Monkey C: Open Monkey Motion

    Opens the Monkey Motion tool

    Monkey C: Open SDK Manager

    Opens the Connect IQ SDK Manager

    Monkey C: View Documentation

    Provides access to all the Connect IQ SDK documentation

     

    Build Configurations Versus Launch Configurations

    In Eclipse, you can create a run configuration for any project in your workspace. Run configurations allow you to create a custom project configuration for how to build or run your application. The Connect IQ plug-in allows you to create configurations that launch a specific project in the simulator with a specific device:

    Visual Studio Code allows you to set and create launch configurations using the launch.json file. To create a launch.json file go to the Run start view and click create a launch.json file:

    By default, the Monkey C extension will create two launch configurations for a project: one to run your app and one to run your tests. The default run task will ask you which device you want to use when you run or debug, but you can create a custom launch configuration with a preset device. The easiest way to add a launch configuration to a launch.json is to go to the last configuration and type Ctrl-Space:

    Customize the configuration by setting its name, the device, and if it stops on launch when debugging by default. Once you have added a configuration, you can set the current launch configuration in the Run and Debug view. This configuration will be launched with the when you start debugging or run without debugging:

    App Settings

    The Eclipse plug-in provides an app settings editor that allows you to alter app settings for your app in the simulator:

    With the Visual Studio Code extension, you can use the simulator to edit your app settings. After starting your application in the simulator, go to File > Edit Persistent Storage > Edit Application.Properties data to bring up the editor:

    Side Loading Applications

    Once you are ready to test your app on a device it needs to be sideloaded. With the Eclipse plug-in, you used the Build for Device Wizard from the Connect IQ menu to create a PRG executable:

    In the Monkey C extension, you use the command Monkey C: Build for Device. You’ll be asked which device to build for from your manifest, and the export directory for the PRG file.

    Exporting Applications

    When you’re ready to upload your app to the store you need to export it as an IQ file. In the Eclipse plug-in you would use Export Wizard. In the Monkey C extension, you use the Monkey C: Export Project command. After setting your export path it will build the IQ file.

    • Jan 26, 2022
  • fēnix 7 and epix (gen 2) Now Available in Device Manager

    Today Garmin announced the new fēnix® 7 series and epixTm (gen 2) series of wearables. All of the new devices are use API level 4.0.0.

    There are 7 days in a week. And the fēnix 7 multisport GPS watch is built to go strong for all of them. Meet any athletic or outdoor challenge with cutting-edge training features, sports apps, 24/7 health and wellness monitoring and more. Use trusted button controls or a new touchscreen interface to access selections. Gain performance insights and metrics that help you manage your exertion and build stamina. Optimize recovery and overall wellness by monitoring heart rate, respiration, stress, sleep and more1.

    With epix, the premium active smartwatch, you can take on every day with the stunning AMOLED display, 24/7 health and wellness monitoring  and smart features. Train how you want with built-in sports apps that fit all the ways you move, performance metrics and Garmin Coach training plans. You can download global TopoActive mapping, or get it preloaded on Sapphire editions. Plus, Sapphire editions support multi-band GNSS technology for stronger, better, more accurate positioning in challenging environments.

    Learn more about the Fenix 2022 personality in the User Experience guide, and use the SDK Manager to update your device library and add fēnix 7 and epix support to your apps. 

     

    1See Garmin.com/ataccuracy

    • Jan 18, 2022
  • Venu 2 Plus Device Configuration Now Available

    Happy 2022! Today Garmin introduced the Venu® 2 Plus. This watch supports API level 4.0.0 and helps you understand your body better with advanced health and fitness features. Once it's paired with your compatible smartphone, you can enjoy the convenience of making calls from your wrist.

    Use the Connect IQ SDK Manager to update your device library and add Venu 2 Plus support to your apps.

    • Jan 4, 2022
  • Best Practices for Creating Monetized Content

    The policies of the Connect IQ store give the developers the opportunity to publish monetized content, and we want that content to make money for you. Here are some tips to consider when creating monetized content for the store.

    No Surprises

    As a user, there is nothing worse than being caught off guard that an app you downloaded is monetized. If your app requires the user to pay in order to use the primary features of the app, you should mark the app in the app detail description as requiring payment. Your primary features should be listed in the app description. Note that for watch faces, it is assumed that viewing the time is a primary feature of the app. This will show the "Payment Required" badge in the app store.

    If you have secondary features that the user can pay for, like additional levels in a game, we do not require you to mark the app as "Payment Required," but your app description must make clear which features are free and which require payment to upgrade.

    Good Payment Experience

    The user should always understand how to purchase your app or pay for a feature. If there is a flow the user has to go through to pay for your app, you should provide user guidance to help them through it. Make an FAQ or video and put a link to it at the top of your app description.

    Even if you have marked your app as requiring payment, it's always a bad experience to show a paywall without some kind of warning. If your app has a trial period, make sure to clearly communicate the remaining time to the user in your experience. With a watch face, it could be as simple as showing the time remaining in the trial at startup.

    Putting a paywall up in a watch face can be frustrating for the user. Rather than display the paywall, guide the user to where they can learn how to pay for the watch face. Implement a payment flow using on-device settings.

    Read the Guidelines

    We updated our guidelines at GDVC this year, which you can read or you can watch a summary video. Some highlights:

    • Use your or your company’s real name or an alias that does not impersonate another person or company.
    • Keep your contact information up to date.
    • Avoid claiming any partnership or affiliation with Garmin, unless we have given you express written permission.
    • You must not perform or encourage any action that creates deceptive reviews or manipulates your app’s rating.

    Violation of these guidelines could result in the removal of your app from the Connect IQ store.

    • Dec 17, 2021
  • Connect IQ 4.0.7 SDK Now Available!

    We released version 4.0.7 of the Connect IQ SDK this afternoon, along with the VS Code 1.0.1 extension, which address several bugs. Of particular significance, this update includes fixes to address problems working with file paths that include space when using VS Code as your IDE. See the SDK release notes below for more details!

    General Changes

    • The minimum supported macOS is now 10.12.
    • End the Visual Studio Code debug session if launching app failed or sim crashed.
    • Show crash message in debugger if app crashes during startup.
    • Fix a memory leak that would occur when using makeWebRequest on a Wi-Fi/LTE connection to download an animation manifest.
    • Fix a memory leak that would occur when using makeWebRequest on a Wi-Fi/LTE connection and the response JSON included duplicated value strings.
    • Reduce application memory usage when processing makeWebRequest responses from a Wi-Fi/LTE connection.
    • Update Graphics API documentation to use the FontType typedef instead of the classes that make up the typedef.
    • Fix broken link in WatchUi.IconMenuItem documentation.
    • Fix parameter typing on Communications.registerForOAuthMessages().
    • Prevent memory corruption when using small coefficient arrays with the IIR filter.
    • Fix the PRG not getting pushed if its path contains a space.

    Simulator Changes

    • Fix AppBase.onAppInstall() not getting launched for the first app run in a newly opened simulator.
    • Fix issue where the current day’s vigorous intensity minutes were used when calculating the total moderate intensity minutes.
    • Fix memory leak with makeImageRequest for some simulated devices.

    Compiler Changes

    • Improve initialization checking on symbols that are confirmed to exist for an object using a ‘self has’ check.
    • Add type checking to ‘object[:variable]’ syntax.
    • Fix a type check bug that caused an error when using ‘NaN’.
    • Nov 30, 2021
  • Thank you to everyone who attended the Garmin Developer Virtual Conference 2021

    Hosted this past October 13, the Garmin Developer Virtual Conference 2021 provided an inside look at ANT, Connect IQ and Garmin Connect Developer Programs. We hope those of you who attended enjoyed our State of the Union and Breakout sessions. 

    Our breakout sessions provided educational content about our developer programs and an in-depth look at the latest updates and features announced during our State of the Union session.

    Our breakout presentations are now available to watch anytime. Click here to view.

    Our keynote presentation by Ray Maker from DC Rainmaker is also available to watch. Click here to view.

    • Nov 18, 2021
  • Welcome to Connect IQ System 5

    Today, Garmin announced Connect IQ System 5. This version of the Connect IQ system is focused on helping you make better, faster and stronger Connect IQ apps. Let’s take a quick look at some of the features.

    Visual Studio Code Monkey C Extension 1.0.0

    Last year, we announced the Visual Studio Code Monkey C extension and released the first beta. Today, we released version 1.0.0 with debugging support. With this release, we now recommend Visual Studio Code for Connect IQ development. The extension requires Connect IQ SDK 4.0.6, which you can get with the SDK Manager.

    We are not deprecating the Eclipse plug-in at this time, but we also are not planning any future enhancements for the plug-in. All new development will be focused on the Visual Studio Code extension.

    Improved App Settings

    We know mobile app settings are important to your app experience, and we are giving you some new options for structuring your settings presentation.

    Groups allow you to group a collection of related settings together. In mobile applications, they are editable in a sub-page, while in Garmin Express, they will be grouped together. You can also allow a group to be enabled and disabled by a Boolean setting. Groups can have a description string to explain the settings contained within.

    Growable lists allow the user to edit a list of records. The user can add records up to a predetermined size or remove them from the list. In your app, they will show up as an array of dictionaries.

    These features will all use the same back-end across mobile, Express and the Connect IQ SDK to reduce variance.

    Here is some sample resources XML for how to use the feature:

    <settings>
    
        <setting propertyKey="@Properties.recordInformation" title="@Strings.recordInformation">
            <settingConfig type="boolean" />
        </setting>
    
        <!-- 
            Here is the syntax for creating a group. This group has a
            dependency on the setting above being enabled with the
            "enableWithTrue" attribute.
        -->
        <group id="recordInfo" 
            title="@Strings.recordInformation" 
            description="@Strings.recordInfoGroupDescription" 
            enableIfTrue="@Properties.recordInformation">
            <!--
              The two settings are visually grouped together. In mobile
              they will be on their own page. In Express they are put within
              a visual grouping
            -->
            <setting propertyKey="@Properties.recordZoneGraph" title="@Strings.recordZoneGraph">
                <settingConfig type="boolean" />
            </setting>
    
            <setting propertyKey="@Properties.recordTimeInZones" title="@Strings.recordTimeInZones">
                <settingConfig type="boolean" />
            </setting>
        </group>
    
        <!-- 
          This is the syntax for a variable sized list group.
          In the properties.xml "customZones" is of type "array".
          The "maxLength" attribute puts a cap on how many items
          the user can create.
        -->
    
        <setting propertyKey="@Properties.customZones" title="@Strings.customZones" maxLength="6">
            <setting type="string" title="@Strings.zoneName">
                <settingConfig id="zoneName" type="alphaNumeric"/>
            </setting>
    
            <setting type="number" title="@Strings.speedCutoff">
                <settingConfig id="speedCutoff" type="numeric"/>
            </setting>
    
        </setting>
    
    </settings>

    Activity Simulation

    We have revamped the simulation interface for the Connect IQ simulator. Now you can set where in your workout you want to add a simulation and have better control of the simulation events.

    Profiler

    We are also adding a new Connect IQ profiler to better measure app performance and see where to focus your attention. The profiler captures time spent in total within a function and for the code within a function and lets you examine the different call stacks profiled. The profiler is integrated into the simulator, and the devices will allow hardware profiling, as well.

    New Guidelines

    We want you to be able to make apps that feel native to the Garmin device experience. To help you design for all our products, we have revamped our user experience guidelines to document our device family personalities and help you make more native-feeling apps.

    In addition, we’ve updated our app review guidelines to better help your apps get through review.

    More Data

    We are adding lots of new metrics and data access to the Connect IQ API:

    In Toybox.ActivityMonitor:

    • Body Battery
    • Stress
    • Remaining recovery time

    In Toybox.UserProfile:

    • VO2 Max
    • Activity history

    In Toybox.Sensor:

    • Magnetometer
    • Gyroscope

    This gives more insight to the user and will look great on a watch face.

    Coming in 2022 - Revamped App Store Analytics

    Next year, we plan to give the app analytics in our app store a total overhaul. Once this update is released, you will be able to see your total installs, your installs broken down by version and device, and the estimated percentage of users that currently have your app installed. This feature will be coming in 2022.

    Try it Today

    You can get the beta of Connect IQ System 5 from the Connect IQ SDK manager. To try the new version, you will need to download the SDK, as well as the following devices:

    1. fēnix® 6 Pro System 5 Preview
    2. Venu 2 System 5 Preview

    These downloads will let you try out the new APIs on simulated devices. We look forward to your feedback!

    • Oct 13, 2021
  • Garmin Developer Virtual Conference Breakout Registration is Open!

    GDVC Breakout Registration is Open!

    The Garmin Developer Virtual Conference (GDVC) is back on October 13, 2021.  Together, we’ll explore how the latest updates and features for Connect IQ, Garmin Connect Developer Programs and ANT can shape the possibilities for our developer community.

    The event will start with a State of the Union Keynote Session, followed by a set of nine breakout sessions. The State of the Union session will only be available live.

    Our live hosted breakouts allow developers to take an in-depth look at the latest updates and features announced during the State of the Union keynote session while offering developers a chance to engage in Q&A with the Garmin team. Breakout session presentations will be made available post-conference.

    See what’s becoming possible with our three tracks: Intro, Connect IQ, and Business. The Intro track is intended for people new to the Garmin developer ecosystem; the Connect IQ track is intended for those focused on Connect IQ app design and/or development; the Business track is intended for individuals and organizations interested in partnerships with Garmin.

    Register for multiple breakout sessions or view individual ones below.

     

    Intro Track 

    Connect IQ Track 

    Business Track 

    11:00 AM - 12:00 PM CT

    Introduction to the Garmin Developer Programs

    Connect IQ User Experience Guide

    Real Estate on Garmin Devices: Your Brand Experience

    12:00 PM - 1:00 PM CT

    ANT® Technology: Exploring the Basics

    Connect IQ Tools and Performance Tips

    Garmin’s Latest API: Enabling Training and Insights for Women

    1:00 PM - 2:00 PM CT

    Garmin Connect Developer Program: An Inside Look at API Integrations

    Connect IQ App Review Guidelines

    Activity Profiles: Elevating the User Experience 

    For more information on the Garmin Developer Virtual Conference visit developer.garmin.com/GDVC

    • Sep 9, 2021
  • Connect IQ 4.0.5 SDK Now Available!

    We released version 4.0.5 of the Connect IQ SDK this afternoon, which addresses several bugs. See the release notes below for details!

    General Changes

    • Fix typing issues with WatchUi.Bitmap.
    • Fix Comm.checkWifiConnection not properly checking Wi-Fi connection is available.
    • Add new Wi-Fi connection status enum values.
    • Add Communications.startSync2().
    • Improve typing of the BackgroundTimer sample.
    • Fix a bug that prevented creating barrel projects in the Visual Studio Code Extension.
    • Add documentation for application scope type checking, including information on how to disable the check if necessary.

    Simulator Changes

    • Prevent the simulator from locking up when launching a new app while debugging.
    • Add the SEND command to mdd for sending files to the simulator.

    Compiler Changes

    • Apply the –Eno-invalid-symbol command line option to undefined symbol checking done during type checking.
    • Improve type checking to update local variable types after if statements based on the if conditions.
    • Improve how poly types are printed in compiler error and warning messages.
    • Fix misspelling in compiler warning message generated when a Connect IQ project consumes a Monkey Barrel that supports languages unsupported by the project.
    • Fix bug in try / catch block code generation which potentially caused accessing invalid portions of the stack.
    • Fix a code generation bug for function calls followed by an array access that caused a Monkey C intermediate representation parsing error.
    • Add if-splitting to while and for statements in the type checker.
    • Improve if-splitting logic on nested if-else statements.
    • Fix bug in type checker if-splitting logic, which was caused by not factoring in “else if” cases.
    • Improve type check errors when a statement is not reachable and when a variable is not initialized in a try-catch statement.
    • Fix type check error when assigning variable to itself in an if statement.
    • Aug 24, 2021