Language

Giới Thiệu Signal Hub: Bộ Công Cụ BLE Chuyên Nghiệp Dành Cho Lập Trình Viên và Nhà Sản Xuất IoT

Nếu bạn đã từng mất hàng giờ nhìn chằm chằm vào các chuỗi HEX thô để tìm hiểu tại sao thiết bị ngoại vi BLE không gửi đúng dữ liệu, bạn hiểu cảm giác đó như thế nào. Debug các thiết bị Bluetooth Low Energy vốn dĩ rất phức tạp — giao thức thì mạnh mẽ, nhưng công cụ hỗ trợ trên di động lại luôn thiếu thốn.

Đó là lý do tôi xây dựng Signal Hub — bộ công cụ BLE chuyên nghiệp được thiết kế dành cho lập trình viên, kỹ sư phần cứng và những người làm IoT cần các công cụ mạnh mẽ, đầy đủ tính năng để tương tác với thiết bị BLE ngay trên điện thoại.

Read More

Thực tiễn tốt nhất: Xử lý nền iOS - Background App Refresh Task

Không giống Android, iOS hạn chế xử lý nền nhằm cải thiện thời lượng pin và trải nghiệm người dùng. Khi ứng dụng chuyển sang chế độ nền, developers mất quyền kiểm soát trực tiếp. Cách thức và thời điểm ứng dụng được phép thực thi tác vụ hoàn toàn phụ thuộc vào hệ thống. Về cơ bản, iOS sử dụng một thuật toán phức tạp để xác định ứng dụng nào được phép chạy nền, dựa trên các yếu tố như mô hình hoạt động của người dùng, trạng thái pin hiện tại và nhiều yếu tố khác.

Trong bài này, chúng ta sẽ học cách yêu cầu thời gian thực thi nền định kỳ trên iOS. Sau khi hiểu cách hoạt động, chúng ta sẽ áp dụng kỹ thuật này cho một ứng dụng BLE ở bài tiếp theo.

Bắt đầu thôi!

Read More

Thực hành tốt nhất: Cách xử lý Bluetooth Low Energy ở chế độ background

Lời mở đầu

Khi làm việc với CoreBluetooth, bạn đã bao giờ tự hỏi ứng dụng BLE trên iOS có thể tồn tại như thế nào khi bị hệ thống terminate chưa? Làm thế nào để đưa nó trở lại background? Có thứ gì giống như Android service có thể chạy mãi mãi không? Bạn sẽ tìm thấy câu trả lời trong bài viết này. Hãy đọc tiếp!

Read More

Truyền Dữ Liệu BLE Đáng Tin Cậy: Xử Lý MTU, Throughput & Chunking

Sớm hay muộn, mọi lập trình viên BLE đều gặp phải cùng một vấn đề: bạn cần gửi hơn 20 byte mỗi lần. Có thể là một firmware image, một lô dữ liệu cảm biến, hoặc một gói cấu hình. Bạn gọi lệnh write và… chỉ có 20 byte đầu tiên đến được. Phần còn lại bị âm thầm bỏ qua.

Gốc rễ của vấn đề này là MTU (Maximum Transmission Unit) — số byte tối đa mà một gói tin BLE có thể mang. Hiểu rõ MTU, biết cách thương lượng nó, và xây dựng một lớp chunking đáng tin cậy bên trên là điều thiết yếu cho bất kỳ ứng dụng BLE thực tế nào.

Trong bài viết này, chúng ta sẽ đề cập mọi thứ bạn cần biết: MTU thực sự là gì, cách thương lượng MTU trên iOS và Android, sự khác biệt giữa các loại write, cách xây dựng giao thức chunking, và cách tối đa hóa throughput.

Bắt đầu thôi!

Read More

Flutter Background Isolates: Xử lý song song mà không ảnh hưởng UI

Flutter chạy trên một luồng chính duy nhất — main isolate — chịu trách nhiệm render UI ở 60 hoặc 120 fps và xử lý các tương tác của người dùng. Bất kỳ tác vụ nặng nào đặt lên luồng đó đều thể hiện ngay lập tức: mất frame, animation bị giật và ứng dụng có cảm giác chậm chạp.

Giải pháp của Dart là isolate: một đơn vị thực thi hoàn toàn độc lập, với bộ nhớ riêng biệt và event loop riêng. Chuyển tác vụ sang một background isolate giải phóng luồng chính để làm đúng thứ nó cần làm tốt nhất — vẽ giao diện.

Trong bài này chúng ta sẽ tìm hiểu background isolate là gì, cách hoạt động bên trong, khi nào nên dùng, và cách tích hợp vào ứng dụng Bluetooth Low Energy.

Bắt đầu thôi!

Read More

MQTT: Giới thiệu, Cài đặt và Best Practices

MQTT (Message Queuing Telemetry Transport) là một giao thức nhắn tin publish/subscribe nhẹ, được thiết kế cho các thiết bị bị giới hạn tài nguyên và mạng không ổn định. Ban đầu được IBM phát triển vào cuối những năm 1990 để giám sát đường ống dầu qua liên kết vệ tinh, ngày nay nó đã trở thành tiêu chuẩn thực tế cho giao tiếp IoT — từ cảm biến nhà thông minh đến hệ thống tự động hóa công nghiệp.

Trong bài viết này, chúng ta sẽ tìm hiểu MQTT là gì, cách cài đặt, các ví dụ thực tế, trường hợp sử dụng, điểm mạnh/yếu và những best practices cần tuân theo.

Read More

Best Practice: Bluetooth Low Energy trên các nền tảng khác nhau

Bluetooth Low Energy (BLE) là công nghệ cốt lõi trong các thiết bị theo dõi sức khỏe, nhà thông minh, thiết bị y tế và nhiều sản phẩm IoT khác. Khi xây dựng ứng dụng có BLE, bạn thường phải lựa chọn giữa: iOS thuần (native), Flutter hoặc React Native.

Thay vì phụ thuộc vào các thư viện BLE bên thứ ba cho Flutter hay React Native, cách tiếp cận tôi khuyến nghị — và thực tế áp dụng — là viết toàn bộ logic BLE bằng Swift thuần với CoreBluetooth, sau đó expose nó ra cho từng framework cross-platform thông qua cơ chế bridge của chúng. Với React Native, đó là Native Modules. Với Flutter, đó là Platform Channels.

Cách này giúp bạn kiểm soát hoàn toàn BLE stack, đảm bảo hành vi nhất quán trong mọi dự án, và không phụ thuộc vào các package BLE bên ngoài vốn hay bị tụt hậu so với các bản cập nhật iOS SDK.

Read More

Core Bluetooth trên WatchOS


Bạn đã bao giờ nghĩ đến việc thêm Watch App vào sản phẩm của mình chưa? Thắc mắc làm thế nào để CoreBluetooth hoạt động trên Watch App của bạn? Bạn đã đến đúng nơi! Hướng dẫn này là cẩm nang dành cho bạn. Trong bài viết này, chúng tôi sẽ hướng dẫn bạn từng bước qua quy trình tích hợp mượt mà dữ liệu từ các thiết bị Bluetooth vào ứng dụng Apple Watch của bạn.

Read More

Phát triển Bluetooth: Callback vs Reactive Programming

Xây dựng ứng dụng Bluetooth Low Energy liên quan đến việc xử lý nhiều thao tác bất đồng bộ: quét, kết nối, khám phá dịch vụ, đọc/ghi characteristic, và xử lý ngắt kết nối. Cách tiếp cận dựa trên callback truyền thống có thể nhanh chóng trở nên khó quản lý, dẫn đến điều mà các nhà phát triển gọi là “callback hell”. Trong bài viết này, chúng ta sẽ so sánh cách tiếp cận callback với lập trình reactive sử dụng RxSwift và RxJava, và khám phá cách các pattern reactive có thể cải thiện đáng kể code BLE của bạn.

Read More

Có gì mới trong BLE trên iOS 26?

Apple tiếp tục nâng cao khả năng Bluetooth Low Energy trong iOS 26, mang đến các tính năng mới và cải tiến cho các nhà phát triển xây dựng trải nghiệm kết nối. Trong bài viết này, chúng ta sẽ khám phá những bổ sung mới nhất cho Core Bluetooth và cách chúng có thể mang lại lợi ích cho ứng dụng của bạn.

Read More