[null, null, {"document_url": "https://smartdevicelink.com/en/guides/iOS/developer-tools/rpc-builder-app/", "unformatted_src": "https://d83tozu1c8tt6.cloudfront.net/media/builds/master/4/9a26829edee337dc6d1627185157d21b41364f9e/developer-tools/rpc-builder-app/assets/Settings.png", "src": "https://d83tozu1c8tt6.cloudfront.net/media/builds/master/4/9a26829edee337dc6d1627185157d21b41364f9e/developer-tools/rpc-builder-app/assets/Settings.png", "formatted_filename": "Settings", "alt_text": "RPC Builder App first screen"}, null, {"document_url": "https://smartdevicelink.com/en/guides/iOS/developer-tools/rpc-builder-app/", "unformatted_src": "https://d83tozu1c8tt6.cloudfront.net/media/builds/master/4/9a26829edee337dc6d1627185157d21b41364f9e/developer-tools/rpc-builder-app/assets/RegisterAppInterface.png", "src": "https://d83tozu1c8tt6.cloudfront.net/media/builds/master/4/9a26829edee337dc6d1627185157d21b41364f9e/developer-tools/rpc-builder-app/assets/RegisterAppInterface.png", "formatted_filename": "RegisterAppInterface", "alt_text": "RegisterAppInterface"}, {"document_url": "https://smartdevicelink.com/en/guides/iOS/developer-tools/rpc-builder-app/", "unformatted_src": "https://d83tozu1c8tt6.cloudfront.net/media/builds/master/4/9a26829edee337dc6d1627185157d21b41364f9e/developer-tools/rpc-builder-app/assets/Connecting.png", "src": "https://d83tozu1c8tt6.cloudfront.net/media/builds/master/4/9a26829edee337dc6d1627185157d21b41364f9e/developer-tools/rpc-builder-app/assets/Connecting.png", "formatted_filename": "Connecting", "alt_text": "Connecting"}, null, {"document_url": "https://smartdevicelink.com/en/guides/iOS/developer-tools/rpc-builder-app/", "unformatted_src": "https://d83tozu1c8tt6.cloudfront.net/media/builds/master/4/9a26829edee337dc6d1627185157d21b41364f9e/developer-tools/rpc-builder-app/assets/RPCs.png", "src": "https://d83tozu1c8tt6.cloudfront.net/media/builds/master/4/9a26829edee337dc6d1627185157d21b41364f9e/developer-tools/rpc-builder-app/assets/RPCs.png", "formatted_filename": "RPCs", "alt_text": "RPC Builder App complete list of RPCs"}, null, null, {"document_url": "https://smartdevicelink.com/en/guides/iOS/developer-tools/rpc-builder-app/", "unformatted_src": "https://d83tozu1c8tt6.cloudfront.net/media/builds/master/4/9a26829edee337dc6d1627185157d21b41364f9e/developer-tools/rpc-builder-app/assets/Show.png", "src": "https://d83tozu1c8tt6.cloudfront.net/media/builds/master/4/9a26829edee337dc6d1627185157d21b41364f9e/developer-tools/rpc-builder-app/assets/Show.png", "formatted_filename": "Show", "alt_text": "RPC Builder App show RPC example"}, null, {"document_url": "https://smartdevicelink.com/en/guides/iOS/developer-tools/rpc-builder-app/", "unformatted_src": "https://d83tozu1c8tt6.cloudfront.net/media/builds/master/4/9a26829edee337dc6d1627185157d21b41364f9e/developer-tools/rpc-builder-app/assets/Modules.png", "src": "https://d83tozu1c8tt6.cloudfront.net/media/builds/master/4/9a26829edee337dc6d1627185157d21b41364f9e/developer-tools/rpc-builder-app/assets/Modules.png", "formatted_filename": "Modules", "alt_text": "RPC Builder App modules example"}, null, {"document_url": "https://smartdevicelink.com/en/guides/iOS/developer-tools/rpc-builder-app/", "unformatted_src": "https://d83tozu1c8tt6.cloudfront.net/media/builds/master/4/9a26829edee337dc6d1627185157d21b41364f9e/developer-tools/rpc-builder-app/assets/Console.png", "src": "https://d83tozu1c8tt6.cloudfront.net/media/builds/master/4/9a26829edee337dc6d1627185157d21b41364f9e/developer-tools/rpc-builder-app/assets/Console.png", "formatted_filename": "Console", "alt_text": "RPC Builder App console example"}, null, {"document_url": "https://smartdevicelink.com/en/guides/iOS/developer-tools/rpc-builder-app/", "unformatted_src": "https://d83tozu1c8tt6.cloudfront.net/media/builds/master/4/9a26829edee337dc6d1627185157d21b41364f9e/developer-tools/rpc-builder-app/assets/Console-RAI.png", "src": "https://d83tozu1c8tt6.cloudfront.net/media/builds/master/4/9a26829edee337dc6d1627185157d21b41364f9e/developer-tools/rpc-builder-app/assets/Console-RAI.png", "formatted_filename": "Console RAI", "alt_text": "RPC Builder App console RAI example"}, null]
iOS Documentation
English 简体中文

RPC Builder


The SmartDeviceLink (SDL) RPC Builder app is a free iOS app designed to help developers understand the SDL interface and how remote procedure calls (RPCs) work. Use the app to test sending and receiving RPCs without writing any code. In order for the RPC Builder app to work correctly, all commands must be executed in proper sequence. For example, when building a custom menu, a performInteraction request will only be successful if sent after a createInteractionChoiceSet request. To find more information about how to properly set up a sequence of commands, please reference the SDL App Developer Documentation.


In order to begin using RPC Builder, the SDL iOS library must be added to the project. There is already support for CocoaPods in this project, so to install the library, simply navigate to the RPC Builder folder in a terminal and then install:

Once the SDL iOS library has been installed, the RPC Builder app can be deployed on an iOS device.

RPC Builder Interface

Settings Page On the settings page, select a RPC spec file. The default Mobile_API.xml file will generate all possible RPCs available for the app. To use a custom RPC spec file, add a new file via iTunes file sharing to the SpecXMLs directory. The file can also be added via a remote URL.

Also on the settings page, set the transport layer to TCP/IP or iAP. For more information on which type of connection to use, please view the SDL iOS Guide.

Once the spec file and transport layer have been set, click on Next. On the next page, send the RegisterAppInterface (RAI) RPC, a request that registers the app with SDL Core. Simply click on Send to use the default RAI settings. If the properties on the RAI screen are modified, they will be cached for subsequent launches. Once Send is pressed, the app will only proceed once it has successfully connected with SDL Core and received a RAI response.

Main RPCs Table The main RPC table is created at runtime by the app from a spec XML file. If there is additional information provided about the RPC call, an information button will appear next to the RPC name in the table. Click on the information button to learn more about the RPC call. Send a RPC

To send an RPC to the SDL Core select the RPC from the table, fill out the RPC parameters and click Send.

Parameter Information

After selecting an RPC from the table, a view will appear with all possible parameters for this RPC. To find out more information about an argument, tap and hold the argument name to reveal the information. Required Parameters

Required data will have a red asterisk next to the argument name.

Struct or Array Parameters

If a parameter is a struct or array, an arrow will appear to the right of the parameter name. More parameter information for the array or struct can be entered by clicking on the parameter table cell. A new view will appear where more information about the parameter can be entered.

Parameter Data

There are three different ways to send an RPC argument.


The purpose of modules is to allow developers to create more advanced testing scenarios. A module can contain multiple RPCs. It can also define capabilities not provided in the RPC spec file. Building New Modules

There are a few requirements for building Modules:

Default Modules

Console Log

The console log shows a simplified output of sent and received requests. Console Color Codes

The console logs are color coded for quick identification.


Tapping once on a RPC call in the console will reveal the JSON associated with that RPC call, if applicable. A Special Note About Putfile

A putFile is the RPC responsible for sending binary data from our mobile libraries to the SDL Core. The RPC Builder app provides support for adding any type of file: either from the camera roll (for images) or iTunes shared storage for any other kind of files. Similar to adding custom RPC spec files, any file located within the BulkData directory will be present in local storage and be usable for upload.


If you need general assistance, or have other questions, you can sign up for the SDL Slack and chat with other developers and the maintainers of the project.

Found a Bug?

If you see a bug, feel free to post an issue.

Want to Help?

If you want to help add more features, please file a pull request.

View on GitHub.com
Previous Section Next Section