Skip to content

Latest commit

 

History

History
executable file
·
209 lines (147 loc) · 9.38 KB

README_JP.md

File metadata and controls

executable file
·
209 lines (147 loc) · 9.38 KB

StarXpand SDK for iOS

StarXpand SDK for iOSはスター精密デバイス向けアプリケーション開発をサポートするソフトウェア開発キットです。

本ソフトウェア開発キットでは、スター精密デバイスを制御するためのフレームワークとして、StarIO10フレームワーク(StarIO10.xcframework)を提供しています。

Apple社の指針に従い、StarIO10 V2.6.1以降はプライバシーマニフェストファイルを含みます。Manifest fileについてはこちらをご参照ください。ただし、StarIO10では過去バージョンを含め、Required Reason APIは使用しておりません。(2024年1月29日現在)

ドキュメント

StarXpand SDKのドキュメントはこちらを参照ください。

ドキュメントにはSDKの概要、サンプルアプリのビルド方法、APIの使用方法、APIリファレンスなどが含まれます。

動作環境

Language Language Version Platform OS Version Arch
Swift 5 iOS iOS 13.0 以降 実機: arm64
シミュレータ: arm64, x86_64

導入

1. StarIO10フレームワークをプロジェクトへ追加する

StarIO10フレームワークをiOSアプリケーションに組み込むには、Swift Package Managerを使用します。

  1. XcodeのFileメニュー > Add Packages... を選択します。
  2. URL入力欄に https://github.com/star-micronics/StarXpand-SDK-iOS と入力します。
  3. StarXpand-SDK-iOS を選択し、Add Packageボタンを押します。

Swift Packageを組み込む手順の詳細については下記URLをご覧ください。

https://developer.apple.com/documentation/swift_packages/adding_package_dependencies_to_your_app

2. 事前手順

プリンターのインターフェースによって、必要な対応があります。
下記表を確認し対応をしてください。

プリンターのインターフェース 必要な対応
Bluetooth 2.1. & 2.2. & 2.4.
Bluetooth Low Energy 2.2.
Ethernet (iOS14以上) 2.3.
Lightning USB 2.1. & 2.4.

2.1. Supported external accessory protocols 項目の設定

  1. Information Property List(デフォルトでは"Info.plist")を選択します。
  2. Keyに Supported external accessory protocols を追加します。
  3. 項目名左側の▽をクリックして表示される"Item 0"の[Value]に jp.star-m.starpro を設定します。

⚠️ 該当するプリンターを使用しない場合は、この設定を行わないでください。

2.2. Bluetooth Always Usage Description 項目および Bluetooth Peripheral Usage Description 項目の設定

  1. Information Property List(デフォルトでは"Info.plist")を選択します。
  2. Keyに Privacy - Bluetooth Always Usage Description を追加します。
  3. Deployment Target をiOS12に設定する場合、Keyに Privacy - Bluetooth Peripheral Usage Description を追加します。
  4. それぞれのValue に Bluetoothの利用目的(例: Use Bluetooth for communication with the printer.)を設定します。
  5. Bluetoothにてプリンターと通信するとき、Bluetoothへのアクセス許可を求めるダイアログが表示されます。その際、Valueに設定した文字列がBluetoothを利用する理由として表示されます。

より詳しくは、下記URLを参照してください。

https://developer.apple.com/documentation/bundleresources/information_property_list/nsbluetoothperipheralusagedescription

2.3. Local Network Usage Description 項目の設定

  1. Information Property List(デフォルトでは"Info.plist")を選択します。
  2. Keyに Privacy - Local Network Usage Description を追加します。
  3. Value に Local Networkの利用目的(例: Use Local Network for communication with the printer or discovery the printers.)を設定します。
  4. iOS14以上でEthernetプリンターと通信するとき、Local Networkへのアクセス許可を求めるダイアログが表示されます。その際、Valueに設定した文字列がLocal Networkを利用する理由として表示されます。

2.4. MFi対応プリンター向けアプリ認証を取得

MFi認証プリンターに対応したiOSアプリケーションを設計・開発し、 Apple iTunes App Storeにアプリケーション登録を行う場合、下記のURLに記載の手順によりアプリ認証を取得してください。Appleによるアプリ審査前に完了しておく必要があります。

https://star-m.jp/products/s_print/apple_app_mfi/index.html

⚠️ Bluetooth Low Energyプリンターを使用する場合は、このアプリ認証を行う必要はありません。

サンプル

StarXpand SDKにはプリンターと組み合わせて動作を確認できるサンプルアプリ が含まれています。リンク先の各機能の解説と合わせてご利用ください。

こちらのサンプルコードと印刷結果画像もご活用ください。

  • 各業態のレシートやラベル用の印刷レイアウトを作成するサンプル
  • テキストデータからレシート画像を生成するサンプル

⚠️ プリンターのモデルによっては印刷できないサンプルがあります。また、ご利用の際は適宜レイアウトを調節してください。

Get printer status

func getStatus() {
    // Specify your printer connection settings.
    let starConnectionSettings = StarConnectionSettings(interfaceType: .lan,
                                                        identifier: "00:11:62:00:00:00")
    
    let printer = StarPrinter(starConnectionSettings)
    
    Task {
        do {
            // Connect to the printer.
            try await printer.open()
            defer {
                Task {
                    // Disconnect from the printer.
                    await printer.close()
                }
            }

            // Get printer status.
            let status = try await printer.getStatus()
            print(status)
        } catch let error {
            // Error.
            print(error)
        }
    }
}

Monitor printer

var printer: StarPrinter?

func monitor() async {
    // Specify your printer connection settings.
    let settings = StarConnectionSettings(interfaceType: .lan,
                                          identifier: "00:11:62:00:00:00")
    printer = StarPrinter(settings)
    
    guard let printer = printer else {
        return
    }
    
    printer.printerDelegate = self
    printer.drawerDelegate = self
    printer.inputDeviceDelegate = self
    printer.displayDelegate = self
    
    Task {
        do {
            // Connect to the printer.
            try await printer.open()
        } catch let error {
            // Error.
            print(error)
        }
    }
}

// Callback for printer state changed.

func printerIsReady(_ printer: StarPrinter) {
    print("Printer: Ready")
}

func drawer(printer: StarPrinter, didSwitch openCloseSignal: Bool) {
    print("Drawer: Open Close Signal Switched: \(openCloseSignal)")
}

func inputDevice(printer: StarPrinter, didReceive data: Data) {
    print("Input Device: DataReceived \(NSData(data: data))")
}

func displayDidConnect(printer: StarPrinter) {
    print("Display: Connected")
}

// ...
// Please refer to document for other callback.

Copyright

Copyright 2022 Star Micronics Co., Ltd. All rights reserved.