Bạn sẽ kiểm tra dịch vụ phản hồi APNS trong hộp cát như thế nào? Hay nói cách khác, làm cách nào bạn buộc một thiết bị ở trong phản hồi?Làm cách nào để bạn kiểm tra dịch vụ phản hồi Thông báo đẩy?
Trả lời
Nếu bạn xóa ứng dụng của mình khỏi thiết bị, tất cả những gì bạn phải làm là thử gửi một thông báo tới thiết bị đó và lần tiếp theo bạn kết nối với máy chủ phản hồi, thiết bị sẽ trả về thiết bị đó. Sau đó nó sẽ không trả lại thiết bị cho đến khi bạn cố gắng gửi thông báo khác đến thiết bị đó.
Ngoài ra, nếu bạn gửi nhiều thông báo đến một thiết bị giữa các kết nối với máy chủ phản hồi, thiết bị sẽ được trả lại cho mọi thông báo đã bị bỏ qua.
Tôi nhận ra câu trả lời đã được chấp nhận cho điều này nhưng để thực hiện vòng kiểm tra đầu tiên mà không phải liên tục cài đặt & xóa ứng dụng của tôi khỏi điện thoại/ipod của tôi Tôi đã tạo một tập lệnh ruby RẤT đơn giản để hoạt động như máy chủ phản hồi. Tôi đã cấu hình lớp APNS ruby của mình để kết nối với máy chủ này thay vì (localhost: 2196) và đọc từ nó. Tôi đã không bắt đầu một kết nối SSL vì vậy tôi chỉ sử dụng các ổ cắm cơ sở để thay thế. Dưới đây là kịch bản tôi đã sử dụng để 'lưu trữ' máy chủ.
#!/usr/bin/env ruby
require 'socket'
puts 'Opening server'
server = TCPServer.open(2196)
loop {
puts 'Waiting for connection'
client = server.accept
puts 'Connected preparing data'
data = [1, 2, 3, 4, 0, 32, ['d41c3767074f541814c2207b78f72e538569cb39eae60a8c4a8677549819e174']]
puts 'Data for delivery: ' + data.inspect
begin
data[6] = data[6].pack('H*')
data = data.pack('c6a*')
loop {
puts 'Writing Data'
client.write data
puts 'Sleeping for 5 seconds'
sleep 5
}
rescue
end
puts 'Done writing, closing'
client.close
}
Tập lệnh này sẽ nghe và khi nhận được kết nối mỗi 5 giây ghi gói vào ổ cắm. Nếu ổ cắm kết nối đóng (ví dụ bạn giết quá trình phản hồi của bạn) thì tập lệnh này sẽ đặt lại và chờ kết nối mới.
Hãy nhớ, không sử dụng công cụ kết nối SSL chỉ là ổ cắm ruby chuẩn. Chúc may mắn!
c: \ telnet localhost 2196 -> works. c: \ telnet 127.0.0.1 2196 -> không hoạt động Rất tiếc. tại sao điều này lại là? Ngoài ra, Indy TcpClient cho tôi kết nối bị từ chối. –
@ T.S Lỗi có nghĩa là máy chủ không nghe trên 127.0.0.1. 'localhost' không nhất thiết chỉ là 127.0.0.1, các truy vấn tra cứu thông qua' gethostbyname() 'hoặc' getaddrinfo() 'có thể giải quyết nó thành các IP cục bộ thực tế, mà' telnet' sẽ thử kết nối đến khi thành công. Nhưng Indy chỉ xử lý 'localhost' là 127.0.0.1 mà không cần cố gắng giải quyết nó một cách tự động. Khi Indy giải quyết một tên máy chủ, nó không cố gắng kết nối với tất cả các IP được báo cáo. Đó là một mục todo. –
Cố định bằng cách thay thế dòng này: "" server = TCPServer.open ("127.0.0.1", 2196) "" –
Tôi nghĩ rằng từ vòng đầu tiên của câu hỏi "Có bu làm thế nào để bạn có được một cái gì đó để hiển thị ở đó?" Thực sự đến từ thực tế là, các xét nghiệm của ông đã không trở về bất kỳ thiết bị, tức là, mặc dù ông có thể đã có các thông báo được gửi thành công đến iPhone/iPad, bất cứ khi nào anh truy vấn máy chủ FB, không có gì trở lại, chính xác vì ứng dụng chưa bao giờ bị xóa khỏi thiết bị, do đó máy chủ chỉ vui vẻ trả lời "0 thiết bị được tìm thấy" (ví dụ) vì không có thiết bị nào không nhận được thông báo.
Vì vậy, khi ứng dụng bị xóa khỏi thiết bị, chỉ khi đó, máy chủ thông báo sẽ cung cấp phản hồi, tức là cuối cùng nó sẽ trả lời bằng danh sách thiết bị đã xóa ứng dụng.
Ý tưởng về máy chủ cục bộ cũng khá tốt.
-Alex
==============
Đây là một tác dụng phụ khó chịu trên đề nghị của Apple để giữ ít nhất một đẩy bật ứng dụng. Đây là gợi ý của tôi đối với tài liệu được đăng trên luồng:
Trên "Sự cố với máy chủ phản hồi", thật thú vị khi lưu ý hai trường hợp: 1) ứng dụng được triển khai tới thiết bị thực, ở chế độ sản xuất; 2) ứng dụng được triển khai tới thiết bị phát triển, tới hộp cát;
Trong 1) gợi ý để lại một ứng dụng cuối cùng (tôi mong đợi nó) đúng và sẽ hoạt động như mô tả; không có vấn đề ở đây.
Trên 2), người dùng phải đảm bảo ứng dụng cuối cùng cũng là một ứng dụng phát triển. Hay nói cách khác, để làm cho mọi thứ trở nên đơn giản hơn, hãy có một "ứng dụng hộp cát" thứ hai chỉ có ở đó để nhấn "công tắc người cuối cùng".Vấn đề tôi gặp phải là khi tôi xóa ứng dụng phát triển của mình, không có gì xảy ra trên máy chủ phản hồi sandbox, mặc dù có các ứng dụng hỗ trợ push khác trên thiết bị, tuy nhiên chúng là tất cả các ứng dụng sản xuất, do đó, chúng sẽ "báo cáo" (nếu bạn có thể nói như vậy) với máy chủ phản hồi sản xuất.
Bản sao thứ hai của ứng dụng của bạn, (ứng dụng hộp cát) là những gì chúng tôi muốn có, để có thể giữ kết nối liên tục với máy chủ hộp cát ... khi bạn xóa ứng dụng của mình hy vọng sẽ báo cáo cho sandbox và bạn có thể làm thử nghiệm thực tế của mình.
Hy vọng điều này là chính xác ... sẽ kiểm tra tông màu.
Tôi có thể xác nhận rằng bạn cần một ứng dụng thứ hai trên thiết bị đang sử dụng máy chủ hộp cát để có được phản hồi về ứng dụng bạn đang thử nghiệm. Điều này có thể chỉ đơn giản là một ứng dụng xương trần với dòng: [[UIApplication sharedApplication] registerForRemoteNotificationTypes: UIRemoteNotificationTypeAlert]; trong phương thức didFinishLaunchingWithOptions của ủy nhiệm ứng dụng. – DougC
@DougC Cách tạo ứng dụng thứ hai. Nếu sử dụng cùng một certs để tạo và chỉ cần thay đổi tên của ứng dụng, thứ hai sẽ thay thế đầu tiên. Bạn có thể cho tôi một số lời khuyên về nó không. Cảm ơn nhiều! – Judy
Trường hợp Apple ghi chú hai kịch bản này? Đó là một câu trả lời tuyệt vời, nhưng bạn đã tìm thấy nguồn này ở đâu? –
- 1. Kiểm tra Phản hồi Thông báo Đẩy của Apple - không có mục nào được nhận
- 2. Làm cách nào để kiểm tra phản hồi 302? WebRequest
- 3. Có cách nào đơn giản để dừng dịch vụ để phản hồi người dùng nhấp vào thông báo không?
- 4. Mã mẫu của Apple PNS (dịch vụ thông báo đẩy)
- 5. Dịch vụ thông báo đẩy của Apple APNS - Thông báo không đến
- 6. Kiểm tra và giám sát dịch vụ web Giao thông
- 7. Rails 3 và dịch vụ thông báo đẩy của apple
- 8. Có dịch vụ thông báo đẩy nào trong Android như Dịch vụ thông báo của Apple Push không?
- 9. Tần suất kiểm tra phản hồi của APNS?
- 10. Tôi làm cách nào để kiểm tra dịch vụ WCF?
- 11. Tôi làm cách nào để kiểm tra dịch vụ web?
- 12. Lỗi Java APNS (Dịch vụ thông báo đẩy của Apple)
- 13. Phản hồi lỗi đọc thông báo đẩy nâng cao PHP của PHP
- 14. Cách kiểm tra URL mà NSURLConnection của bạn cung cấp cho bạn phản hồi từ đâu?
- 15. Làm cách nào để hiển thị lại Chế độ xem thông báo "Bạn muốn gửi cho bạn thông báo đẩy"?
- 16. Kiểm tra trong phản hồi API REST
- 17. Làm cách nào để POST một chuỗi XML vào một dịch vụ web để kiểm tra?
- 18. làm cách nào để kiểm tra dịch vụ web MTOM bằng soapUI?
- 19. Kiểm tra phản hồi trong node.js?
- 20. Làm cách nào để đăng thông báo phản hồi SAML bằng NSURLConnection?
- 21. Làm cách nào để kiểm tra xem quy trình có phản hồi không?
- 22. Làm cách nào để nhận được thông báo đẩy với Indy?
- 23. Làm cách nào để thêm dữ liệu mới thông qua dịch vụ REST phản đối dịch vụ kiểu RPC?
- 24. cách tạo thông báo đẩy tùy chỉnh bằng cách sử dụng dịch vụ web asp.net?
- 25. Làm cách nào để kiểm tra phản hồi 204 trong RSpec trong Rails?
- 26. làm cách nào để kiểm tra mã trạng thái phản hồi yêu cầu http từ iOS?
- 27. Làm cách nào để gửi thông báo đẩy bằng Erlang?
- 28. Cách kiểm tra Thông báo đẩy đang hoạt động trong ứng dụng của tôi
- 29. Làm cách nào để kiểm tra xem hồ sơ cấp phép phân phối iOS có bật thông báo đẩy không?
- 30. Làm cách nào để bạn thực hiện kiểm tra đơn vị khi kết quả thay đổi?
Không hoạt động ở chế độ hộp cát. Tôi không bao giờ nhận được phản hồi ... – jjxtra
Xem nhận xét của DougC –