Skip to content

Xcode で開発を始める

Xcode で開発するアプリケーションに Brother Print SDK を組み込む方法を紹介します。

SDK を追加する

  1. BT_Net/BRLMPrinterKit.xcframework または Net/BRLMPrinterKit.xcframework のどちらかを対象ターゲットの Embedded BinariesLinked Frameworks and Libraries に追加する
  2. (必要に応じて)Framework Search PathsHeader Search Paths にライブラリへのパスを追加する

プリンターとの通信に Bluetooth を利用する場合は BT_Net/BRLMPrinterKit.xcframework を追加してください。Bluetooth を利用しないのであれば Net/BRLMPrinterKit.xcframework を追加してください。

BT_Net/BRLMPrinterKit.xcframework を利用する場合は、次の設定が必要になります。

  1. Info.plistUISupportedExternalAccessoryProtocols (Supported external accessory protocols) を追加する
  2. 追加した UISupportedExternalAccessoryProtocols の値に com.brother.ptcbp を設定する

Xcode 12 以降で Network プリンターを利用するアプリをビルドする場合、次の設定が必要になります。

  1. Info.plistNSLocalNetworkUsageDescription (Privacy - Local Network Usage Description) と NSBonjourServices (Bonjour services) を追加する
  2. 追加した NSLocalNetworkUsageDescription の値に、アプリで必要な理由を設定する
  3. 追加した NSBonjourServices の値に _pdl-datastream._tcp _printer._tcp _ipp._tcp の 3 つを設定する

OS や開発環境の更新内容は Apple の開発者サイトで確認してください

SDK の機能を実装する

プリンターと通信するためのサンプルコードです。詳細は各機能ガイドを参照してください。

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];
}

Product Plan ID を取得する

MFi 対応プリンター向けアプリケーションを App Store で公開する場合、Product Plan ID (PPID) を取得する必要があります。 PPID を取得するためには こちら を参照してください。

Bluetooth接続の際の注意点

アプリケーションがBluetooth通信を使用する場合、iOSはユーザーにアプリケーションがBluetoothを使用することをの許可を求めます。 その際にユーザーに提示する利用目的を Info.plist に登録する必要があります。

アプリの Info.plist に以下のキーを追加してください。( string 型の値は例です。)

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

アプリの iOS Deployment Target がiOS 13未満の場合は、さらに以下のキーをアプリの Info.plist に追加してください。 ( string 型の値は例です。)

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

App Storeへリリースする際の注意点

Version 4.3.1以下の BRLMPrinterKit.framework を含んだアプリケーションをApp Storeへ公開する場合には、 下記コマンドを実行してシミュレータ用のアーキテクチャ(i386, x86_64)をFrameworkから除外する必要があります。

$ 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

下記コマンドを実行することで、シミュレータ用のアーキテクチャ(i386, x86_64)が除外されていることを確認できます。

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

Xcode 12 で発生するビルドエラー解消のヒント

Version 4.3.1以下の BRLMPrinterKit.framework を含んだアプリケーションをXcode 12以上を使ってビルドする際、下記のようなエラーメッセージが表示されてビルドに失敗する場合、以下のいずれかの方法を試していただくことで、エラーを解消できる可能性があります。

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

一度、 Validate Workspace の設定を Yes にしてビルドしてください。 その後 Validate WorkspaceYes, No のいずれも選択していただけますが、ビルド結果が異なります。

  • Yes を選択した場合: ワーニングが発生しますが、アプリケーションのビルドは成功します。
  • No を選択した場合: エラーもワーニングも発生することなくアプリケーションのビルドに成功します。

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

arm64 をプロジェクトのシミュレータアーキテクチャから除外してください。 プロジェクトの Build Settings に進み、Excluded Architecture は"arm64"で指定し、 Any iOS Simulator SDK を追加してください。