2015-02-08 23 views
8

Tôi nhìn vào sự phát triển của một ứng dụng iOS mà sẽ giao tiếp với các thiết bị Bluetooth cổ điển sử dụng iOS Supported Bluetooth ProfilesBluetooth cổ điển với iOS ExternalAccessoryFramework

Theo tôi được biết, điều này sẽ có thể sử dụng khuôn khổ ngoài Phụ kiện và không nên đòi hỏi sự tham gia trong chương trình MFi. Từ MFi FAQ:

Những loại phụ kiện và các công nghệ không phải là một phần của chương trình MFI ?

Các phụ kiện không sử dụng bất kỳ công nghệ được cấp phép MFi nào được liệt kê ở trên không thuộc Chương trình MFi. Ví dụ:

Cho đến nay, như vậy tốt. Sự ra đời External Accessory Framework doc nói (nhấn mạnh thêm):

Khung bên ngoài cung cấp hỗ trợ phụ kiện để giao tiếp với phần cứng bên ngoài kết nối với một thiết bị iOS dựa trên thông qua các kết nối dock 30-pin hoặc không dây sử dụng Bluetooth. Các ứng dụng mà hỗ trợ phụ kiện bên ngoài phải đảm bảo định cấu hình tệp Info.plist của chúng một cách chính xác. Cụ thể, bạn phải bao gồm mã khóa UISupportedExternalAccessoryProtocols để khai báo các giao thức phần cứng cụ thể mà ứng dụng của bạn hỗ trợ.

Giá trị của "giao thức phần cứng cụ thể" ở đâu được ghi chú ở trên? Tôi giả định rằng đây là đề cập đến cấu hình Bluetooth?

FWIW, tôi đã tải xuống và cố gắng chạy Apple's EADemo app. Nó bao gồm các giá trị com.apple.p1 và com.apple.p2 cho khóa UISupportedExternalAccessoryProtocols. Khi tôi chạy ứng dụng EADemo trên iPod Touch/iOS8.1.3 thế hệ thứ tư, nó không tìm thấy bất kỳ thiết bị BT nào. Nó sẽ tìm thấy loa Jawbone mà nó được kết nối.

Để đơn giản hóa, tôi cũng đã tạo ra một ứng dụng mẫu rất nhỏ để lắng nghe thông báo EAAccessoryDidConnectNotification:

- (void)viewDidLoad { 
    [super viewDidLoad];   
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(accessoryDidConnect:) name:EAAccessoryDidConnectNotification object:nil]; 
    [[EAAccessoryManager sharedAccessoryManager] registerForLocalNotifications]; 

} 

- (void) accessoryDidConnect:(NSNotification *)notification { 
    EAAccessory *connectedAccessory = [[notification userInfo] objectForKey:EAAccessoryKey]; 
    NSLog(@"didConnect: %@", connectedAccessory.name); 
} 

Khi tôi chạy mã trên iPod Touch, không có thông báo nhận được. Trong khi ứng dụng đang chạy. Tôi đã tắt loa Jawbone rồi bật để kết nối. (Tôi có thể xác nhận rằng nó kết nối bằng cách nhìn vào Cài đặt-> Bluetooth).

Tôi đã thêm khóa UISupportedExternalAccessoryProtocols vào ứng dụng plist và để trống mảng giá trị và thêm com.apple.p1 và com.apple.p2 (như trong ứng dụng EADemo).

Bất kỳ ý tưởng nào về những gì tôi bị thiếu? Làm thế nào một ứng dụng iOS có thể được thực hiện để giao tiếp với một thiết bị Bluetooth cổ điển?

Trả lời

8

TL; DR: Khung EA sẽ chỉ hoạt động với các thiết bị MFi.

Từ Hỗ trợ phát triển của Apple kỹ thuật:

Xin chào Tom,

Đáp lại câu hỏi của bạn liên quan đến việc sử dụng các External Phụ kiện khuôn khổ

Q1. Nếu tôi đang cố gắng kết nối theo chương trình với thiết bị BT với bất kỳ cấu hình nào trong số các cấu hình này bằng cách sử dụng khuôn khổ EA, thiết bị có phải là MFi tuân thủ không? Trả lời - có. Phụ kiện phải thực hiện giao thức đặc biệt để xác định dữ liệu được gửi/nhận qua lựa chọn vận chuyển được chọn làm dữ liệu EA được hỗ trợ.

Q2. Ví dụ, tôi có thể viết mã bằng cách sử dụng khung EA để kết nối với loa Bluetooth không tương thích với MFi không? Trả lời - Hầu hết Loa Bluetooth cổ điển sử dụng AVRCP/A2DP để truyền dữ liệu âm thanh trên Bluetooth bằng iPhone. Dữ liệu này hoàn toàn tách biệt với dữ liệu được đánh dấu để hỗ trợ Phụ kiện bên ngoài. Không thể sử dụng khung EA để truy cập dữ liệu được gửi qua AVRCP/A2DP. Tuy nhiên, một số loa thực hiện trao đổi dữ liệu EA riêng biệt, sẽ hoạt động với ứng dụng EA Framework. Tuy nhiên câu trả lời trực tiếp - không. An Ứng dụng khung EA sẽ hoạt động bình thường với phụ kiện tương thích MFI - thậm chí nhiều hơn một tập hợp con - một trong số đó cần sử dụng với EA.

Nhận xét - Loa Jawbone không xuất hiện trong UITableView trong ứng dụng EADemo . Trả lời - điều này là chính xác. Loa Jawbone không phải là phụ kiện EA EA. Tuy nhiên, Nike Fuelband là một phụ kiện EA. An xem xét quan trọng - để sử dụng EA Framework, bạn phải làm việc với nhà cung cấp phụ kiện để tìm hiểu giao thức dữ liệu được phụ kiện hỗ trợ - dữ liệu trông như thế nào khi nhận và gửi dữ liệu.

+0

Xin chào, sau rất nhiều tìm kiếm, tôi đang ở trên liên kết này. bạn có thể vui lòng cho tôi biết nếu tôi phải kết nối với phụ kiện giấy phép MFi sử dụng bluetooth cổ điển (Bluetooth® Phiên bản 2.1 SPP pro le HID Pro le Apple iAP2/MFi) và tôi phải viết ứng dụng iPhone để giao tiếp với nó ... sử dụng accessary bên ngoài chúng ta phải ghi danh cho giấy phép phát triển MFi ... hoặc chúng tôi có thể trực tiếp sử dụng SDK của họ vì nó là phụ kiện giấy phép MFi ... Xin vui lòng cho tôi biết – user2813740

Các vấn đề liên quan