Xcode で開発を始める
Xcode で開発するアプリケーションに Brother Print SDK を組み込む方法を紹介します。
SDK を追加する
BT_Net/BRLMPrinterKit.xcframework
またはNet/BRLMPrinterKit.xcframework
のどちらかを対象ターゲットの Embedded Binaries と Linked Frameworks and Libraries に追加する- (必要に応じて)Framework Search Paths、Header Search Paths にライブラリへのパスを追加する
プリンターとの通信に Bluetooth を利用する場合は BT_Net/BRLMPrinterKit.xcframework
を追加してください。Bluetooth を利用しないのであれば Net/BRLMPrinterKit.xcframework
を追加してください。
BT_Net/BRLMPrinterKit.xcframework
を利用する場合は、次の設定が必要になります。
Info.plist
にUISupportedExternalAccessoryProtocols
(Supported external accessory protocols) を追加する- 追加した
UISupportedExternalAccessoryProtocols
の値にcom.brother.ptcbp
を設定する
Xcode 12 以降で Network プリンターを利用するアプリをビルドする場合、次の設定が必要になります。
Info.plist
にNSLocalNetworkUsageDescription
(Privacy - Local Network Usage Description) とNSBonjourServices
(Bonjour services) を追加する- 追加した
NSLocalNetworkUsageDescription
の値に、アプリで必要な理由を設定する - 追加した
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 Classic 通信を使用する場合、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>
Bluetooth Classic通信機能を使わない場合
プリンターとの通信に Bluetooth Classic を利用しないのであれば Net/BRLMPrinterKit.xcframework
を対象ターゲットの Embedded Binaries と Linked Frameworks and Libraries に追加してください。
このSDKを用いることでアプリケーションを App Store で公開する場合、Product Plan ID (PPID) の取得やInfo.plist
へのキー追加は不要です。
このSDKを用いるにはプロジェクトの Build Settings に進み、Preprocessor Macros に WLAN_ONLY
を追加してください。
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 Workspace は Yes
, 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
を追加してください。