Developer Resources

IXPAND

Developer Guide

SanDisk iXpand™ is a family of storage accessories for devices running Apple’s iOS. iXpand devices enable transfer and storage of photos, music, videos and files between iPhones, iPads, PCs and Mac computers. iXpand accessories are accessible over lightning and USB connectors.

SanDisk's iXpand SDK enables third party application developers to seamlessly access and manage iXpand devices from their own iOS applications through the lightning interface.

The picture below shows the high-level architecture of applications that utilize the iXpand SDK.

Figure 1 High Level Block Diagram

CONCEPTS

SanDisk iXpand SDK contains two sets of APIs:

  • File System APIs - an industry-standard, familiar filesystem API to the iXpand device for managing storage-releated software operations
  • System APIs - access to administration functionality not directly related to storage

iXpand SDK is available as an iOS framework file. A developer needs to include the framework and header files within the the target application’s source tree for successful integration.

Figure 2 below shows the concepts explained above:

Figure 2 Conceptual Block Diagram

MODULES OVERVIEW

To access the iXpand SDK, the developer must initialize 'iXpandSystemController' and 'FileSystemController' respectively. All system APIs are accessible as part of 'iXpandSystemController', and file system APIs are accessible over 'FileSystemController'.

To initialize the iXpand, create the 'iXpandSystemController' instance first, then call 'initDrive' and 'OpenSession'. When 'OpenSession' is completed, iXpand is ready to communicate.

You can create the 'FileSystemController' instance to deal with File System APIs. When all the operations with iXpand device are completed, the application can successfully close communication with the device using 'closeSession' API.

COMPILATION INSTRUCTIONS

Include the 'iXpandSDK.framework' and other libraries the application requires as shown in Figure 3 below:

Figure 3 Adding Library

 

In the application source code, include the following headers:

#import <iXpandSDK/iXpandSystemAPI.h>

This will allow the application source to access the iXpand APIs.

FILE WRITE EXAMPLES

The code snippet below shows how to initialize the iXpand drive:


if (![[iXpandSystemController sharedController] initDrive:accessory])

{
       dispatch_sync(dispatch_get_main_queue(), ^{
              [self.consoleString appendString:@"Drive Initialisation failed"];
              [self updateConsole];
              return;
        });
       }

else {
        If( [[iXpandSystemContbrroller sharedController] openSession]) {
             // iXpand is successfully opened
         }
}

 

Following code snippet shows sample of opening file and writing to iXpand.

 

If([[iXpandFileSystemController sharedController] changeDirectoryAbsolutePath:@"\\"])

{

         Int handle = [[iXpandFileSystemController sharedController] openFileAbsolutePath:path openMode:mode];

    if (handle != -1)

      {

           uint32_t dataLength = 0;

           uint32_t uintDataSize = 0;

           uint32_t uintDataTranLen = 0;

           uintDataSize = (uint32_t)[self returnFileSize:test0];

        @synchronized(self)

{

            while((dataLength != -1) && (uintDataSize != 0))

                {

                   @autoreleasepool  {

                  uintDataTranLen = ((uintDataSize > MAX_DATABUFFER)?  MAX_DATABUFFER : uintDataSize);

                     [[fileHandle readDataOfLength:uintDataTranLen] getBytes:byDataBuf];

                     NSData *aData = [NSData dataWithBytes:byDataBuf length:sizeof(byDataBuf)];

                     dataLength = [[iXpandFileSystemController sharedController] writeFile:handle  writeBuf:aData writeSize:uintDataTranLen];

                       uintDataSize -= dataLength;

                                                      }

                       }

          [[iXpandFileSystemController sharedController] closeFile:handle];

          [fileHandle closeFile];

              }

    }

}

 

The code snippet below shows how to close the session with the iXpand drive after file operation is completed:

            [[iXpandSystemController sharedController] closeSession];

SDK GLOSSARY

1. Meta Data:  Additonal information about a media file. For example, the meta data of a music file can contain artist, album, title, etc.

2. Thumbnail:  A small image representation of a larger file, typically used to show an icon of the file.

 

DESIGN GUIDELINES

It's not enough to make an app easy to use; try new things and present your app in inventive new ways. Make your app feel personal, giving people access to superb technology with ease yet with a splash of personality. Essential downloads, stencils, and tools can help you create your design.

iXpand doesn’t generate thumbnails and meta data information of media files. Your third party application must handle thumbnail and meta data generation if you require it.

iXpand accessory doesn’t protect application specific files. The developer has the flexibility to organize iXpand files in any manner you wish.

 

Usability

A well-designed app is accessible by anyone, regardless of ability. Design your app so anyone can navigate it, understand it, and use it with ease.

 

Layout

Create hierarchy, meaning, and focus that immerse the user in the experience. We recommend consistency across environments by repeating visual elements, structural grids, and spacing across platforms and screen sizes. Make sure your layouts scale to fit any screen size.

 

Style

The iXpand color palette comprises primary and accent colors that can be used for illustration or to develop your brand colors. It has been designed to work harmoniously with each other. Visit the SanDisk website for brand colors and styles.

 

Download SDK, Sample App, Demo,
Integration Docs, Data Sheet

Click here to visit the iXpand downloads page **  You'll learn how the iXpand SDK can benefit your app with the extension, transfer, and repository capabilities of external storage. The SDK includes a sample app that shows how to initiate & close session with the iXpand device, and performs file operations for Read, Write, and Delete.

 

FAQs

Which version of the iXpand drive works with the iXpand SDK?

The iXpand SDK is designed to work with the first generation iXpand flash drive and iXpand flash drive V2 (introduced in June 2016).
 

What does MFi (Made for iPod / iPhone / iPad) mean?

The MFi logos mean that Apple has certified a product for use with specific iOS devices via interface such as lightning connector, Bluetooth, WiFi etc. iXpand devices are MFI certified devices communicating over lightning interface.

 

Do I need to whitelist my app to submit it to the Apple store?

Your application must be whitelisted in the MFI accessory product plan before submitting it to the Apple store. After we have confirmed whitelisting of your app, we will send you your product plan ID which should be mentioned in the Review Notes section of your Apple app submission. Check out the Submit App page for details.

 

Do I need any special tools to create an iXpand app?

We offer the iXpand SDK that includes libraries, source code examples, and documentation to make creating iOS apps simple and straightforward. Using the iXpand emulator can save significant time during the development process.

 

How do I develop/debug an iXpand app when an iXpand drive is connected over a lightning connector?

An emulator is provided with the iXpand SDK that you can use when developing your iXpand application. During integration with actual hardware, the lightning connector is occupied by an accessory, so debugging over WiFi is recommended (such as NSLogger).

 

What is the read/write performance when using the iXpand SDK?

There read/write performance depends on the actual iXpand drive that iOS device accessing. Please refer specification of your iXpand device.

** iXpand downloads require a free Developer Portal account - click here to register

Do more with the
iXpand SDK

Click the buttons below to visit the iXpand Developer Home & Workflow pages

 

Developer
Home

Get started, access the SDK, build your apps, & learn more


View Home

Developer
Workflow

Register & submit your app for review and contact support


View Workflow