2016-08-19 13 views
14

Tôi không thể nhận được hai thông báo này EAAccessoryDidConnectNotificationEAAccessoryDidDisconnectNotification sau khi kết nối Lightning kBD hoặc Smart KBD với APP của tôi. Nhưng nó hoạt động trên iOS9.3 với mã của tôi như sau,Không EAAccessoryDidConnectNotification và EAAccessoryDidDisconnectNotification sau khi kết nối Lightning kBD hoặc Smart KBD

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_accessoryDidConnect:) name:EAAccessoryDidConnectNotification object:nil]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_accessoryDidDisconnect:) name:EAAccessoryDidDisconnectNotification object:nil]; 
[[EAAccessoryManager sharedAccessoryManager] registerForLocalNotifications]; 

Nguyên nhân là gì?

P.S .: Tôi nhận được thông báo sau trong nhật ký. Không thể tìm ra "com.apple.private.externalaccessory.showallaccessories" hưởng

+0

Gần đây tôi đã tình cờ gặp hành vi tương tự với cùng một nhật ký, bạn có thể tìm ra nguyên nhân không? – AnderCover

+0

Cùng một vấn đề ở đây, bao gồm thông báo "com.apple.private.externalaccessory.showallaccessories". Bất kỳ ánh sáng đổ về vấn đề này? – cshavit

+0

Bất kỳ giải pháp nào cho đến bây giờ? –

Trả lời

0

Tôi đã xóa "iOS Đội hồ sơ provisioning: *" trong Xcode-> sở thích-> Tài khoản - chi tiết> view ->.

Ngay sau khi bạn xóa hồ sơ đó, một bản sao mới sẽ được tải xuống. Kể từ đó tôi không thấy điều này "Không thể tìm thấy com.apple.private.externalaccessory.showallaccessories entitlement" nữa. Tôi đoán quyền lợi này hiện nằm trong "hồ sơ cấp phép cho Nhóm iOS: *". Nếu ID gói của bạn có mặt trong "hồ sơ cấp phép cho Nhóm iOS khác" thì tôi cũng khuyên bạn nên xóa các hồ sơ cấp phép đó.

+0

Bây giờ bạn không nhận được thông báo lỗi, bạn có thể liệt kê các thiết bị BT được ghép nối thông qua '[[EAAccessoryManager sharedAccessoryManager] connectedAccessories]'? Nếu có, dịch vụ/khả năng nào được bật cho ứng dụng của bạn? Cảm ơn! – cshavit

+0

Tôi không gặp bất kỳ vấn đề gì ngay cả với thông báo lỗi và có Tôi đang sử dụng sharedAccessoryManager connectedAccessories. Các Khả năng đều bị tắt. Phụ kiện của tôi là một máy quét mã vạch Bluetooth cổ điển. – EricG

0

Có vẻ như vấn đề này được biết đến trong phiên bản iOS 10 (beta) vì chúng tôi không có bản phát hành ổn định, Điều này dường như được giải quyết trong bản phát hành ổn định của iOS 10. Nó cũng được nâng lên trên Apple Developer Forum. giải pháp cụ thể.

Mặc dù tôi đã cố gắng một vài điều khác nhau để khắc phục điều này, nhưng cuối cùng lại làm điều này, mà làm việc:

  1. sạch
  2. sạch thư mục Build
  3. Xóa và tái liên kết ExternalAccessory.framework
  4. Xóa ứng dụng trên thiết bị iOS
  5. Xây dựng và chạy

Nếu cách này không hiệu quả, hãy thử xóa và tạo hồ sơ cấp phép mới cho ứng dụng của bạn.

-3

Bạn có thể thử xóa và tạo cấu hình cấp phép mới cho ứng dụng của mình.

Trong iOS 10 Apple có hai yêu cầu mới để ứng dụng của bạn có thể nhận được thông báo EAAccessoryDidConnectNotification và EAAccessoryDidDisconnectNotification và có thể liệt kê thiết bị qua [[EAAccessoryManager sharedAccessoryManager] connectedAccessories].

Include a protocolString of the external accessory in your app's UISupportedExternalAccessoryProtocols property list. 

Have the external accessory's manufacturer submit to Apple a request for MFi whitelisting of your app. 

Để gỡ lỗi, chỉ cần (1) là cần thiết. Nhưng ứng dụng của bạn sẽ không được Apple phê duyệt (có thể không phải ngay cả đối với TestFlight) mà không có (2).

+1

Vui lòng không sao chép câu trả lời của người dùng khác vào câu trả lời của bạn mà không tham chiếu chính xác nội dung; xem http://stackoverflow.com/help/referencing. Tuy nhiên, trong trường hợp này, tôi không chắc chắn lý do tại sao bạn sao chép nội dung * ở tất cả *, vì câu trả lời của bạn là viết tắt của nó, vì vậy tôi đã chỉnh sửa nội dung đã sao chép. – Matt

-3

Trong iOS 10 Apple có hai yêu cầu mới để ứng dụng của bạn có thể nhận được thông báo EAAccessoryDidConnectNotificationEAAccessoryDidDisconnectNotification và có thể liệt kê thiết bị qua [[EAAccessoryManager sharedAccessoryManager] connectedAccessories].

  1. Bao gồm giao thứcPhụ kiện phụ kiện bên ngoài trong danh sách tài sản UISupportedExternalAccessoryProtocols của ứng dụng.

  2. Để nhà sản xuất phụ kiện bên ngoài gửi cho Apple yêu cầu danh sách trắng của ứng dụng MFi.

Để gỡ lỗi, chỉ cần (1) là cần thiết. Nhưng ứng dụng của bạn sẽ không được Apple phê duyệt (có thể không phải ngay cả đối với TestFlight) mà không có (2).

+0

Cảm ơn. Bất kỳ tài liệu nào về điều này? Bạn đã nghe về nó ở đâu? – Mike

+0

Mike, từ https://developer.apple.com/library/content/featuredarticles/ExternalAccessoryPT/Introduction/Introduction.html cộng với cuộc trò chuyện với nhà sản xuất phụ kiện. – cshavit

+1

Thực sự lạ câu trả lời này đã được chấp nhận, nó có giải quyết một cái gì đó cho ai đó? Với tôi những yêu cầu này không phải là mới, và việc họ không ngăn chặn lỗi xảy ra. Tôi sẽ đặt cược vào một lỗi táo và một chút birdie nói với tôi để hy vọng và chờ đợi cho bản phát hành nhỏ iOS 10 tiếp theo – AnderCover

0

Đây là kinh nghiệm của tôi. Trên Xcode 8.1, tôi có thể xây dựng thành công một dự án Apple dựa trên NIB cũ (EADemo) và chạy nó trên thiết bị iOS 10.1.1. Nó hoạt động tốt với phụ kiện Bluetooth của tôi. Sau đó, tôi đổi tên thư mục dự án và hoàn tất việc chuyển sang dự án dựa trên Storyboard. Chạy ứng dụng trên cùng một iPhone phiên EA bị lỗi và tôi nhận được nhật ký lỗi:

2016-11-29 17: 04: 00.804421 K5Demo [430: 69578] Không thể tìm thấy "com.apple.private .externalaccessory.showallaccessories" hưởng 2016/11/29 17: 04: 04,736780 K5Demo [430: 69.578] lỖI - phiên khai mạc thất bại như giao thức (null) không được khai báo trong Info.plist

Đối với hai trường hợp, Tệp Info.plist giống nhau và cũng là phiên bản iOS.

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