{"id":15966916,"url":"https://github.com/opticonosedevelopment/opticonnect_sdk_flutter","last_synced_at":"2026-04-05T23:34:24.469Z","repository":{"id":257805935,"uuid":"864039429","full_name":"OpticonOSEDevelopment/opticonnect_sdk_flutter","owner":"OpticonOSEDevelopment","description":"OptiConnect SDK enables BLE connectivity, data and command control for Opticon OPN-2500 and OPN-6000 barcode scanners.","archived":false,"fork":false,"pushed_at":"2024-12-03T09:20:37.000Z","size":222167,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-09T23:17:25.643Z","etag":null,"topics":["android","barcode","barcode-scanner","ble","bluetooth","bluetooth-le","dart","flutter","flutter-plugin","ios","macos","opticon","scanners","sdk","windows"],"latest_commit_sha":null,"homepage":"https://pub.dev/packages/opticonnect_sdk","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpticonOSEDevelopment.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-27T11:33:22.000Z","updated_at":"2024-12-03T09:20:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"1f1d77d4-3234-406b-8c39-4f2ada3f6739","html_url":"https://github.com/OpticonOSEDevelopment/opticonnect_sdk_flutter","commit_stats":null,"previous_names":["opticonosedevelopment/opticonnect_sdk_flutter"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpticonOSEDevelopment%2Fopticonnect_sdk_flutter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpticonOSEDevelopment%2Fopticonnect_sdk_flutter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpticonOSEDevelopment%2Fopticonnect_sdk_flutter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpticonOSEDevelopment%2Fopticonnect_sdk_flutter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpticonOSEDevelopment","download_url":"https://codeload.github.com/OpticonOSEDevelopment/opticonnect_sdk_flutter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247184150,"owners_count":20897725,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","barcode","barcode-scanner","ble","bluetooth","bluetooth-le","dart","flutter","flutter-plugin","ios","macos","opticon","scanners","sdk","windows"],"created_at":"2024-10-07T18:06:24.165Z","updated_at":"2025-12-30T23:08:38.325Z","avatar_url":"https://github.com/OpticonOSEDevelopment.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OptiConnect SDK\n\nOptiConnect SDK enables seamless integration with [Opticon](https://opticon.com/)'s BLE [OPN-2500](https://opticon.com/product/opn-2500/) and [OPN-6000](https://opticon.com/product/opn-6000/) barcode scanners. This SDK allows you to manage Bluetooth Low Energy (BLE) connections, handle scanner data streams, and programmatically control scanner settings via commands.\n\n**Note:** This package is independent of the [OptiConnect application](https://opticon.com/opticonnect/), which provides additional device management features. The SDK provides lower-level BLE functionality directly interacting with Opticon's BLE devices.\n\n## Documentation\n\nFor comprehensive information on the SDK setup, usage, and API reference, please visit the [OptiConnect SDK Documentation](https://opticonosedevelopment.github.io/opticonnect_sdk_flutter/).\n\n## Pub.dev Flutter Package\n\nThe OptiConnect SDK is available as a Flutter package on pub.dev [here](https://pub.dev/packages/opticonnect_sdk/).\n\n## Features\n\n-  Bluetooth discovery and connection management for OPN-2500 and OPN-6000 BLE scanners.\n-  Real-time data streaming, including barcode data reception and BLE device state monitoring.\n-  Programmatic control of scanner settings (e.g., scan modes, illumination, connection pooling, etc.).\n-  Exclusive connection management: Ensure stable device pairing in multi-device environments by assigning unique connection pool IDs, preventing previously paired devices from hijacking active connections.\n-  Command management and customization for BLE services and scanner configurations.\n\n## Getting Started\n\n### Prerequisites\n\n-  Flutter SDK version 2.12.0 or above.\n-  Opticon BLE [OPN-2500](https://opticon.com/product/opn-2500/) or [OPN-6000](https://opticon.com/product/opn-6000/) barcode scanner(s).\n\n| ![OPN-2500](https://raw.githubusercontent.com/opticonosedevelopment/opticonnect_sdk_flutter/main/assets/images/OPN-2500.png) | ![OPN-6000](https://raw.githubusercontent.com/opticonosedevelopment/opticonnect_sdk_flutter/main/assets/images/OPN-6000.png) |\n| :--------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: |\n|                                                         **OPN-2500**                                                         |                                                         **OPN-6000**                                                         |\n\n### Installation\n\nTo install the SDK, add the following dependency to your `pubspec.yaml` file:\n\n```yaml\ndependencies:\n   opticonnect_sdk: ^1.0.0\n```\n\n### Important\n\nThis SDK uses [flutter_blue_plus](https://pub.dev/packages/flutter_blue_plus) under the hood for Bluetooth Low Energy (BLE) communications. We have provided the necessary permission configurations for Android and iOS within this README. You can refer to the flutter_blue_plus documentation for additional BLE-specific settings or for more advanced usage scenarios.\n\n### Android Setup\n\nto enable Bluetooth discovery and connection on Android, add the following permissions to your AndroidManifest.xml file located at android/app/src/main/AndroidManifest.xml below the manifest entry at the top:\n\n```xml\n\u003cuses-feature android:name=\"android.hardware.bluetooth_le\" android:required=\"false\" /\u003e\n\n\u003c!-- New Bluetooth permissions for Android 12 or higher --\u003e\n\u003cuses-permission android:name=\"android.permission.BLUETOOTH_SCAN\"/\u003e\n\u003cuses-permission android:name=\"android.permission.BLUETOOTH_CONNECT\" /\u003e\n\u003cuses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" /\u003e\n\n\u003c!-- Legacy permissions for Android 11 or lower --\u003e\n\u003cuses-permission android:name=\"android.permission.BLUETOOTH\" android:maxSdkVersion=\"30\" /\u003e\n\u003cuses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\" android:maxSdkVersion=\"30\" /\u003e\n\n\u003c!-- Legacy permission for Android 9 or lower --\u003e\n\u003cuses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" android:maxSdkVersion=\"28\" /\u003e\n```\n\n### iOS Setup\n\nTo enable Bluetooth and background functionality for BLE device scanning on iOS, you need to modify a few project files.\n\n#### 1. Update Info.plist\n\nAdd the following keys to your ios/Runner/Info.plist file to request Bluetooth and location permissions:\n\n```xml\n\u003ckey\u003eNSBluetoothAlwaysUsageDescription\u003c/key\u003e\n\u003cstring\u003eThis app needs Bluetooth to communicate with scanners and retrieve data.\u003c/string\u003e\n\n\u003ckey\u003eNSLocationWhenInUseUsageDescription\u003c/key\u003e\n\u003cstring\u003eThis app requires location access to scan for BLE devices while in use.\u003c/string\u003e\n\n\u003ckey\u003eNSLocationAlwaysUsageDescription\u003c/key\u003e\n\u003cstring\u003eThis app requires location access to scan for BLE devices even when in the background.\u003c/string\u003e\n\n\u003ckey\u003eUIBackgroundModes\u003c/key\u003e\n\u003carray\u003e\n   \u003cstring\u003ebluetooth-central\u003c/string\u003e\n\u003c/array\u003e\n```\n\n#### 2. Update Podfile\n\nEnsure that the Podfile contains the required permissions for Bluetooth and location access by adding the following lines in your ios/Podfile:\n\n```\npost_install do |installer|\n  installer.pods_project.targets.each do |target|\n    flutter_additional_ios_build_settings(target)\n\n    target.build_configurations.each do |config|\n      config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [\n        '$(inherited)',\n\n        ## Enable required permissions\n        'PERMISSION_LOCATION=1',  # Enable location permissions\n        'PERMISSION_BLUETOOTH=1', # Enable Bluetooth permissions\n      ]\n    end\n  end\nend\n\n```\n\n#### 3. Enable Background Modes for Bluetooth LE Accessories in Xcode\n\nTo allow the app to use Bluetooth in the background, follow these steps:\n\n1. Open your iOS project in Xcode.\n2. Select the Runner target in the project navigator.\n3. Go to the Signing \u0026 Capabilities tab.\n4. Click the + Capability button in the top left.\n5. Select Background Modes from the list.\n6. Check the option for Uses Bluetooth LE Accessories.\n\n### MacOS Setup\n\nMake sure you have granted access to the Bluetooth hardware:\n\n1. Open your MacOS project in Xcode.\n2. Go to Runners -\u003e Targets -\u003e Runner.\n3. Go to the Signing \u0026 Capabilities tab.\n4. Under App Sandbox, ensure that Bluetooth is enabled by checking the Bluetooth box under Hardware.\n\nYou can refer to the image below for guidance:\n\n![MacOSPermission](https://raw.githubusercontent.com/opticonosedevelopment/opticonnect_sdk_flutter/main/assets/images/macos_bluetooth_permission.png)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopticonosedevelopment%2Fopticonnect_sdk_flutter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopticonosedevelopment%2Fopticonnect_sdk_flutter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopticonosedevelopment%2Fopticonnect_sdk_flutter/lists"}