Develop via Xcode

You can develop iOS applications to use Brother Print SDK via Xcode.

Add the SDK

  1. Put BT_Net/BRLMPrinterKit.xcframework or Net/BRLMPrinterKit.xcframework at any location
  2. Add it to Embedded Binaries and Linked Frameworks and Libraries of your application target
  3. Add Framework Search Paths and Header Search Paths if needed

BT_Net/BRLMPrinterKit.xcframework is required when your application print via Bluetooth using MFi compatible printers, otherwise you can use Net/BRLMPrinterKit.xcframework.

The following information is required in Info.plist when your application use Bluetooth.

  1. Add UISupportedExternalAccessoryProtocols key (Supported external accessory protocols) to Info.plist if not exists
  2. Add an item com.brother.ptcbp to the key

The following information is required when building an app that uses a network printer with Xcode 12 or later.

  1. Add NSLocalNetworkUsageDescription (Privacy - Local Network Usage Description) and NSBonjourServices (Bonjour services) in Info.plist.
  2. Set the text value required in your app in NSLocalNetworkUsageDescription.
  3. Set the following values in NSBonjourServices: _pdl-datastream._tcp _printer._tcp _ipp._tcp

Check Apple's developer site for OS and development environment updates.

Implement Feature using the SDK

Follows is minimum code to connect to the printer. See each guides for more details.

Swift

import BRLMPrinterKit

func yourGreatFeature() {
    let channel = BRLMChannel(wifiIPAddress: "IPAddress.of.your.printer")

    let generateResult = BRLMPrinterDriverGenerator.open(channel)
    guard generateResult.error.code == BRLMOpenChannelErrorCode.noError,
        let printerDriver = generateResult.driver else {
            print("Error - Open Channel: %d", generateResult.error.code)
            return
    }

    print("Success - Open Channel")
    //
    // Put any code to use printer
    //

    printerDriver.closeChannel()
}

Objective-C

#import <BRLMPrinterKit.h>

- (void)yourGreatFeature {
    BRLMChannel *channel = [[BRLMChannel alloc] initWithWifiIPAddress:@"IPAddress.of.your.printer"];

    BRLMPrinterDriverGenerateResult *generateResult = [BRLMPrinterDriverGenerator openChannel:channel];
    if (generateResult.error.code != BRLMOpenChannelErrorCodeNoError
        || generateResult.driver == nil) {
        NSLog(@"Error - Open Channel: %@", @(generateResult.error.code));
        return;
    }

    NSLog(@"Success - Open Channel");
    BRLMPrinterDriver *printerDriver = generateResult.driver;
    //
    // Put any code to use printer
    //

    [printerDriver closeChannel];
}

Get Product Plan ID

You have to have Product Plan ID (PPID) in order to submit the application for MFi compatible printers to App Store. PPID will be informed to you from Brother Industries, Ltd. Please proceed this instructions. You don't have to proceed it if you do not distribute your application from App Store.

Notes when using Bluetooth connection

When your app uses Bluetooth connection, iOS requests the permission from users. To do that, the purpose of using Bluetooth needs to be added into Info.plist.

Add the following key to Info.plist in your app. (The following value of type string is an example.)

<key>NSBluetoothAlwaysUsageDescription</key>
<string>Used to connect to your printer</string>

If your app's deployment target is earlier than iOS 13, following key needs also to be added into Info.plist in your app. (The following value of type string is an example.)

<key>NSBluetoothPeripheralUsageDescription</key>
<string>Used to connect to your printer</string>

Notes when releasing to the App Store

When you submit your App including BRLMPrinterKit.framework ,version 4.3.1 or lower, to App Store, you have to delete simulator architectures (i386, x86_64) by running following commands.

$ cp -v [your current directory]/BRLMPrinterKit.framework/BRLMPrinterKit [your backup directory]/BRLMPrinterKit.framework/BRLMPrinterKit
$ lipo -remove i386 [your current directory]/BRLMPrinterKit.framework/BRLMPrinterKit -o [your current directory]/BRLMPrinterKit.framework/BRLMPrinterKit
$ lipo -remove x86_64 [your current directory]/BRLMPrinterKit.framework/BRLMPrinterKit -o [your current directory]/BRLMPrinterKit.framework/BRLMPrinterKit

You can check if the simulator architectures (i386, x86_64) are deleted from BRLMPrinterKit.framework by running following commands.

$ lipo -info [your current directory]/BRLMPrinterKit.framework/BRLMPrinterKit

Tips to resolve build errors with Xcode 12

When you get one of two errors below with Xcode 12 or later and BRLMPrinterKit.framework ,version 4.3.1 or lower, the followings may resolve the error.

1)"Building for iOS, but the linked and embedded framework 'BRLMPrinterKit.framework' was built for iOS + iOS Simulator."

To fix this error, you must once set Validate Workspace setting Yes and build. After that, you can specify either Yes or No, but the build result will be slightly different.

  • Yes: This will produce a warning instead of the error, but you can build your app.
  • No: This will not produce a warning or error, and you can build your app.

2)"Building for iOS Simulator, but linking in dylib built for iOS"

Exclude arm64 for simulator architecture from your project. To do that, navigate to Build Settings of your project and add Any iOS Simulator SDK with value arm64 inside Excluded Architecture.