2015-06-10 27 views
9

Các thay đổi API hiện tại cho trạng thái iOS9 mà -setKeepAliveTimeout:handler: không được chấp nhận.setKeepAliveTimeout không được chấp nhận trong iOS9

Cho đến nay, đây là cách duy nhất để ứng dụng VoIP SIP trên iOS có thể duy trì đăng ký với máy chủ SIP.

Kỹ thuật này được sử dụng bởi nhiều ứng dụng khác nhau như LinPhone và các ứng dụng khác.

Có ai có quan điểm về các lựa chọn thay thế được đề xuất bởi Apple không? Hoặc SIP sẽ bị tê liệt bắt đầu từ (sau) iOS9?

Xem: https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIApplication_Class/index.html#//apple_ref/occ/instm/UIApplication/setKeepAliveTimeout:handler:

http://www.linphone.org/docs/liblinphone/group__IOS.html

+0

Tôi có cùng một vấn đề. Ứng dụng VoIP của tôi đăng ký làm mới trên thời gian chờ KeepAlive. Nó được cho là làm việc trong môi trường lan thậm chí w/o kết nối internet có nghĩa là không có thông báo từ xa. Ứng dụng của tôi hiện đang hoạt động với API không còn được dùng nữa nhưng không chắc chắn sẽ kéo dài bao lâu. – Phani2013

Trả lời

0

của Apple tài liệu thay thế trong trang bạn liên kết:

Discussion

In iOS 8 and later, voice-over-IP (VoIP) apps register for UIRemoteNotificationTypeVoIP remote notifications instead of using this method.

+3

UIRemoteNotificationTypeVoIP cho phép trình kích hoạt bên ngoài đánh thức ứng dụng voip. Điều này không đề cập đến trường hợp máy khách SIP cần phải đăng ký lại chủ động với máy chủ SIP. – chriscap

0

Dường như bạn có để rò rỉ các sự kiện truyền tín hiệu đến máy chủ thông báo táo đẩy bằng cách đăng ký https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIApplication_Class/index.html#//apple_ref/occ/instm/UIApplication/registerForRemoteNotifications.

Điều này thật không may, nhưng có vẻ không thể tránh khỏi. Ý tưởng đằng sau điều này có lẽ là để tiết kiệm pin bằng cách có ít kết nối mạng hoạt động trên điện thoại.

Vì vậy, điều này có nghĩa là bạn phải tiết lộ thông tin rằng một sự kiện đã đến ứng dụng của bạn với các dịch vụ của Apple. Có thể bạn chỉ cần gửi thông báo 'wake' đến ứng dụng của mình và sau đó xử lý tải loại sự kiện - nhưng điều này có thể gây ra quá nhiều thời gian chờ, vì vậy bạn có thể cần phải tiết lộ nhiều thông tin tín hiệu hơn cho các dịch vụ táo. : -/

0

Từ Documents của Apple:

In iOS 8 and later, voice-over-IP (VoIP) apps register for registerForRemoteNotifications remote notifications instead of using this method. Using remote notifications eliminates the need for a timeout handler to check in with the VoIP service. Instead, when a calls arrives for the user, the VoIP service sends a VoIP remote notification to the user’s device. Upon receiving this notification, the device launches or wakes the app as needed so that it can handle the incoming call.

Trong quá khứ, các cuộc gọi setKeepAliveTimeout dùng để cho phép một handler được gọi là các thời kỳ cuối cùng và sẽ có một tối đa là 10 giây để thoát hoặc được buộc phải chấm dứt, cũng các cuộc gọi đến trình xử lý không được đảm bảo nằm trong giá trị hết giờ.

mới (registerForRemoteNotifications) sẽ là ok để làm việc với kể từ khi xử lý nội bộ (IOS) và sẽ ở-turn gọi ứng dụng của bạn khi một sự kiện từ xa xảy ra (điều này thậm chí sẽ đánh thức ứng dụng của bạn nếu nó trong giấc ngủ). Dù bằng cách nào, cả hai đều nên làm điều tương tự, phiên bản cũ hơn bạn sẽ xử lý mã, và phiên bản mới, bạn sẽ nhận được một thông báo (cũng xử lý nó ở đâu đó), nhưng bạn sẽ không còn kiểm soát thời gian chờ.

Từ docs Apple:

Call this method to initiate the registration process with Apple Push Notification service. If registration succeeds, the app calls your app delegate object’s application:didRegisterForRemoteNotificationsWithDeviceToken: method and passes it a device token. You should pass this token along to the server you use to generate remote notifications for the device. If registration fails, the app calls its app delegate’s application:didFailToRegisterForRemoteNotificationsWithError: method instead.

Nếu bạn muốn thông báo từ xa ứng dụng của bạn để hiển thị cảnh báo, chơi âm thanh, hoặc thực hiện các hành động người dùng phải đối mặt với khác, bạn phải gọi registerUserNotificationSettings: Phương pháp để yêu cầu loại thông báo bạn muốn sử dụng. Nếu bạn không gọi phương thức đó, hệ thống sẽ tự động gửi tất cả các thông báo từ xa đến ứng dụng của bạn. Do quá trình đăng ký tính đến cài đặt thông báo ưa thích của người dùng, việc yêu cầu quyền truy cập vào các loại thông báo hướng đến người dùng cũng không đảm bảo rằng chúng sẽ được cấp. Để tìm hiểu cài đặt thông báo nào có sẵn, hãy sử dụng phương thức currentUserNotificationSettings.

Và Cuối cùng (đối với Un-Đăng ký doanh nghiệp):

You should call this method in rare circumstances only, such as when a new version of the app removes support for all types of remote notifications. Users can temporarily prevent apps from receiving remote notifications through the Notifications section of the Settings app. Apps unregistered through this method can always re-register.

Không chắc, nhưng tôi hy vọng điều này sẽ giúp.

Kính trọng,

Heider Sati

0

Nếu chúng tôi tích hợp PUSHKIT, nó sẽ chăm sóc tất cả mọi thứ liên quan đến wakeup ứng dụng. Nếu bạn gửi thông báo đẩy trong khi nhận được cuộc gọi VoIP với thông báo Push qua PUSHKIT, nó sẽ hoạt động nếu nó ở chế độ nền. Tôi đã làm điều tương tự.

Tôi hy vọng điều này sẽ giúp bạn.

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