2010-09-29 35 views
14

Tôi đang phát triển thông báo đẩy cho một ứng dụng của tôi, tôi đã viết nhà cung cấp trong PHP và nó hoạt động tốt. Trước đây tôi đã thử nghiệm các thông báo đẩy với bản dựng dev và máy chủ sandbox của Apple và mọi thứ hoạt động tốt, bây giờ tôi đang cố gắng làm cho nó hoạt động với một bản dựng AdHoc nhưng tôi chưa bao giờ nhận được bất kỳ tin nhắn nào trên điện thoại. Đây là những gì tôi đã làm:AdHoc xây dựng không nhận được thông báo đẩy

  • Bật thông báo đẩy sản xuất cho ứng dụng, tạo chứng chỉ, tải xuống, tạo PEM theo hướng dẫn here và tải lên máy chủ của tôi. Cấu hình PHP Script của tôi để sử dụng gateway.push.apple.com và cổng 2195 cho kết nối và kiểm tra nó, kết nối đến máy chủ hoạt động như mong đợi.
  • Bố cục tải trọng giống với dev và viết cho luồng hoạt động
  • Sau khi kích hoạt sản xuất APN Tôi đã tạo lại hồ sơ cấp phép AdHoc và xác minh sau khi xây dựng trong môi trường quyền hạn được thiết lập để " sản xuất "(có nghĩa là)
  • Đã cài đặt Ứng dụng thông qua AdHoc trên thiết bị chưa chạy ứng dụng trước đó, tôi được hỏi có cho phép PN, nhấp vào có và máy chủ của tôi nhận được mã thông báo giống như vậy.
  • Cố gắng gửi tin nhắn (sẽ gửi tới 3 thiết bị) thông qua môi trường sản xuất. Không có lỗi khi kết nối với Apple hoặc gửi dữ liệu nhưng tôi không nhận được thông báo đẩy trên bất kỳ thiết bị nào.

Tôi thực sự không biết ý tưởng gì có thể sai, không ai có ý tưởng? Cảm ơn rất nhiều!

Trả lời

30

Cuối cùng tôi đã tìm ra điều này, vấn đề là nếu bạn mở kết nối với APNS và gửi nhiều hơn một thông báo đẩy VÀ một trong các mã bạn gửi không phải là mã thông báo hợp lệ cho chứng chỉ này (ví dụ: bạn gửi trên một mã thông báo thuộc về một cá thể dev trong khi được kết nối với chứng chỉ sản xuất), APNS hủy bỏ việc phân phối tất cả các PN mà bạn đã gửi trong lô này. Ít nhất đó là những gì tôi có kinh nghiệm cho đến nay, vì vậy hãy chắc chắn rằng bạn luôn luôn giữ dev của bạn và mã thông báo sản xuất độc đáo tách :)

+2

Ý nghĩa của dòng: luôn giữ mã thông báo sản xuất và dev của bạn được phân tách độc đáo. mã thông báo là từ thiết bị vì vậy sự khác biệt giữa dev và sản xuất là gì? – Vijay

+1

Người đàn ông, không có ý tưởng mất bao lâu để tôi tìm ra điều này là tốt. Tôi đã xóa cơ sở dữ liệu để bắt đầu thử nghiệm với AdHoc và nó hoạt động tốt. Cảm ơn bài đăng của bạn. – Colnaghi

+2

Tôi đã trở nên điên rồ ... Tất cả các chứng chỉ và cấp phép di động và như vậy đã được thiết lập rất nhiều (hai lần ...) và vẫn không có may mắn. Gosh làm thế nào điều này có thể không được vào tài liệu thông báo đẩy của Apple ... (Điều đó nói rằng, sẽ là khó khăn để phát hiện) Cảm ơn một bó. – nembleton

0

Tôi đang gặp khó khăn với cùng một vấn đề. Tôi tin rằng vấn đề là với adhoc xây dựng, táo sẽ chỉ gửi thông báo cho họ từ máy chủ apns sản xuất, hãy thử điều đó.

+0

bạn có thể cung cấp ví dụ về làm thế nào để làm điều này? – Charx

0

Để bản phân phối và phát hành luôn sử dụng chứng chỉ sản xuất.

1

Giấy chứng nhận đẩy cho sản xuất và phát triển là khác nhau. Và để tạo các mã thông báo thiết bị khó hơn cho sản xuất và hộp cát khác nhau cho cùng một thiết bị. Kiểm tra chéo nếu đây là chính xác và chắc chắn bạn phải có faltered trong này. Để nhận mã thông báo thiết bị ở chế độ Sản xuất, hãy viết một chế độ xem cảnh báo trong sự kiện AppRelivate didreceivenotifications.

Khi bạn nhận được dấu hiệu này, bạn sẽ biết rằng nó là khác nhau từ dev dấu hiệu mà chúng ta đang tạo ra được lý do bạn không thể gửi thông báo trên PROD

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