24

Tôi đang sử dụng khung lõi-bluetooth cho ứng dụng của mình trong Iphone-4s.
Điều này thường phải là ứng dụng nền có thể chạy càng lâu càng tốt.Vấn đề thời gian nền cho ứng dụng Bluetooth LE dành cho Iphone 4s

Hiện chỉ chạy trong 40 phút - tối đa 1 giờ.

Tôi hy vọng ít nhất 1 ngày hoặc lâu hơn.

Giá trị "bluetooth-trung tâm" này được thêm vào khóa "Chế độ nền bắt buộc" trong tệp .plist.

Dường như ứng dụng của tôi sẽ tạm dừng chế độ "tạm dừng" ở cuối. kể từ khi tôi mở lại ứng dụng (nền cho trạng thái nền trước), nó sẽ gửi lại thông báo, có nghĩa là kết nối bluetooth vẫn được kết nối và thiết bị BLE vẫn đang gửi thông báo. Nếu tôi bấm nút Home và ứng dụng đến nền, nó không nhận được thông báo một lần nữa.

Ai đó có thể cho tôi biết lý do ứng dụng của tôi chỉ hoạt động ở chế độ nền trong tối đa 1 giờ. Nó sẽ tiếp tục chạy như ứng dụng âm nhạc bình thường trong nền cho mãi mãi.

Apple có nói bất cứ điều gì cụ thể về tình trạng ứng dụng nền (đó là một trong những ứng dụng nền chạy liên tục rơi xuống trong 5 danh mục) mà nó sẽ chuyển sang chế độ tạm ngừng không?

Nhắc "iPhoneAppProgrammingGuide", vào "Communicating with a Bluetooth Accessory" phần, tôi đến để nhận biết rằng, đối với nhiệm vụ nền chạy dài cho các ứng dụng Bluetooth LE 2 triển khai là necessory:

1) UIBackgroundModes then chốt cần được "bluetooth Trung "trong tệp Info.plist. 2) Bất kỳ ứng dụng nào hỗ trợ xử lý nền dữ liệu Bluetooth phải dựa trên phiên.

Vì vậy, đối với ứng dụng của tôi, triển khai FIRST được tích hợp và ứng dụng đó có thể chạy ở chế độ nền và thực hiện tất cả các tác vụ cho thời lượng tối đa 1 giờ là.

Bây giờ tôi cần triển khai thực hiện lần 2. tức là dựa trên phiên. Điều này sẽ cho phép nhận các sự kiện ngay cả khi ứng dụng đang ở trạng thái "tạm ngừng" theo tài liệu. Tôi đã cố gắng tìm cách tạo một phiên phù hợp cụ thể cho Bluetooth LE (khung chính của Bluetooth) như "EASession" hiện tại dành cho Bluetooth Cổ điển (khung Phụ kiện Ngoài). Nhưng tôi không tìm thấy nó.

Về cơ bản, tôi không chắc chắn tôi cần sử dụng loại phiên nào cho mục đích BLE. Đối với âm thanh/video, mạng và internet, phụ kiện bên ngoài, , có sẵn phiên phiên riêng. Không có khung Core Bluetooth.

Ai đó có thể giúp tôi, lớp học nào phù hợp với BLE.

+0

Bạn sẽ có thể chạy ở chế độ nền miễn là bạn muốn, bạn có bao giờ làm việc này không? –

+2

Tôi cũng thấy điều tương tự. Thiết bị ngoại vi của tôi có thể mất kết nối với thiết bị ios trong vài phút, và khi nó trở lại trong phạm vi, ứng dụng nền sẽ tìm thấy nó và tiếp tục. Nhưng nếu mất kết nối trong nhiều giờ, ứng dụng nền sẽ ngừng kết nối lại. – Jonathan

+0

Nếu bạn cần phải hack xung quanh nó, bạn có thể bật phát lại âm thanh nền và lặp lại một âm thanh im lặng ngắn liên tục khi ứng dụng vào nền và dừng nó khi nó hoạt động. –

Trả lời

5

Tôi nghĩ vấn đề là đơn giản cố gắng để thực hiện bạn info.plist như màn hình của tôi:

enter image description here
Và nếu bạn muốn, bạn có thể thêm các chức năng trên AppDelegate.m dưới didFinishLaunchingWithOptions để bật Bluetooth, AirPlay WiFi và nhiều hơn nữa, đây chỉ là một mã ví dụ, nhưng tôi nghĩ rằng có thể giúp bạn.

NSError *sessionError = nil; 
[[AVAudioSession sharedInstance] setDelegate:self]; 
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:&sessionError]; 
[[AVAudioSession sharedInstance] setActive:YES error:nil]; 

UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback; 
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory); 

UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; 
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride); 

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 

Hy vọng điều này có thể giúp bạn.

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