Tôi hiện đang triển khai ứng dụng iOS sử dụng CoreBluetooth để truyền dữ liệu giữa 2 thiết bị. Ví dụ, để gửi dữ liệu từ trung ương đến các thiết bị ngoại vi, tôi sử dụng mã này:Kích thước dữ liệu tối đa khi gửi dữ liệu qua BTLE trên iOS
NSData *data = [NSJSONSerialization dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error:nil];
NSLog(@"Writing data of length %d", [data length]);
[peripheral writeValue:data forCharacteristic:characteristic type:CBCharacteristicWriteWithResponse];
này hoạt động hoàn toàn tốt, nhưng điều này là rằng tôi đã đọc nhiều lần bây giờ mà đặc điểm có thể chuyển tối đa 20 byte một lần. Ngoài ra, khi tôi xem xét Apple's BTLE Example Code, chúng thực hiện một cơ chế chia tách dữ liệu thành các phần 20 byte. Tuy nhiên, đoạn mã trên in một cái gì đó như Writing data of length 124
- dữ liệu đến tốt ở thiết bị khác, mặc dù.
Vì vậy: Tại sao tính năng này hoạt động? Và thậm chí nhiều hơn như vậy, tôi sợ rằng điều này có thể phá vỡ tại một số điểm, đặc biệt là khi các thiết bị không phải iOS đi vào hoạt động.
Devices đều iOS7 hoặc iOS6? – Rashad
@Rashad iOS 7.0 và iOS 7.1.1. Và như tôi đã nói, tôi đặc biệt quan tâm nếu điều này sẽ phá vỡ với các thiết bị không phải iOS (mà tôi cần phải xem xét) – BlackWolf
@BlackWolf, bạn đã tìm thấy bất kỳ câu trả lời cho câu hỏi của bạn. Tôi không thể tìm cách kiểm tra ATT_MTU cho iPhone. Trong IOS 9, có một phương thức - (NSUInteger) maximumWriteValueLengthForType: (CBCharacteristicWriteType) loại NS_AVAILABLE (NA, 9_0); , điều này cung cấp cho ATT_MTU.nhưng tôi không biết nếu MTU được đưa ra bởi phương pháp này là hợp lệ cho tất cả các phiên bản iOS. –