5

Như tựa đề cho biết, tôi có một ứng dụng có sẵn APNS. Nó hoạt động hoàn hảo trong chế độ Sandbox. Nhưng ở chế độ sản xuất, nó thất bại thảm hại.Tác vụ thông báo đẩy iPhone hoạt động trong hộp cát nhưng không ở chế độ sản xuất

Dường như tôi có chứng chỉ phù hợp trên máy chủ, vì tôi không nhận được lỗi từ APNS-Service. Mọi thứ dường như hoạt động tốt. Tôi đang sử dụng ApnsPHP bởi Aldo Armiento. Nó có một chức năng tích hợp để nhổ ra các kết quả từ APNS-Server. Khi tôi cố gắng sử dụng Sandbox với ứng dụng từ cửa hàng, tôi nhận được - như mong đợi - một mã thông báo không hợp lệ-lỗi (vì mã thông báo từ hộp cát và quá trình sản xuất khác nhau). Khi tôi sử dụng chứng chỉ sản xuất với ứng dụng từ cửa hàng, tôi không gặp lỗi. Không có gì, nada, zilch - có vẻ như nó đã gửi thông báo. Than ôi, nó không đến trên điện thoại của tôi.

Vì vậy, rõ ràng, các chứng chỉ phải ổn. Nó kết nối với máy chủ, nó sẽ gửi thông báo, tất cả các lỗi mà không có lỗi (trước tiên tôi đã có chứng chỉ sai, vì vậy tôi biết điều gì sẽ xảy ra nếu chúng không đúng :)

Bất kỳ ý tưởng nào để tìm ra nơi ẩn các lỗi ?

[Chỉnh sửa] đây là những gì tôi nhận được trở lại từ APNS-Dịch vụ:

Tue, 03 Jan 2012 03:13:55 +0100 ApnsPHP[13049]: INFO: Trying ssl://gateway.push.apple.com:2195... 
Tue, 03 Jan 2012 03:13:56 +0100 ApnsPHP[13049]: INFO: Connected to ssl://gateway.push.apple.com:2195. 
Tue, 03 Jan 2012 03:13:56 +0100 ApnsPHP[13049]: INFO: Sending messages queue, run #1: 1 message(s) left in queue. 
Tue, 03 Jan 2012 03:13:56 +0100 ApnsPHP[13049]: STATUS: Sending message ID 1 [custom identifier: Message-Badge-000] (1/3): 107 bytes. 
Tue, 03 Jan 2012 03:13:56 +0100 ApnsPHP[13049]: INFO: Disconnected. 

Trả lời

10

Dưới đây là ba trường hợp, bạn có thể kiểm tra ở cuối của bạn: -

  1. Hãy chắc chắn rằng bạn đã sử dụng chứng chỉ sản xuất phù hợp ở phía máy chủ của bạn. vì chúng tôi cần tạo hai chứng chỉ khác nhau cho sản xuất và hộp cát. đảm bảo bạn đang sử dụng đúng chứng chỉ trên máy chủ.

  2. giây bạn có thể kiểm tra xem bạn có sử dụng đúng cổng và số cổng ở phía máy chủ hay không. Kể từ khi cửa ngõ cho sản xuất và sandbox là một trong những khác nhau. Cổng được sử dụng cho sản xuất là: - gateway.push.apple.com. và bạn cũng đang sử dụng đúng mật khẩu trên máy chủ cho chứng chỉ của mình mà bạn đã sử dụng trên máy chủ của mình.

  3. thứ ba bạn có thể kiểm tra xem thông báo trên thiết bị của bạn có được bật hay không. Bạn cũng cần bật nó trên iPhone của mình. Đảm bảo rằng trên thiết bị của bạn.

Hãy cho tôi biết nếu nó phù hợp với bạn.

+0

Cảm ơn - nhưng tôi đã kiểm tra tất cả. Tất cả mọi thứ được thiết lập theo cách nó được cho là. Và như đã đề cập, tôi không nhận được bất kỳ lỗi nào từ dịch vụ push, nó xuất hiện khi các tin nhắn đi qua ... rất lạ. – Swissdude

+0

bạn đã thử tạo lại chứng chỉ sản xuất và đặt nó trên máy chủ chưa? –

+1

Xấu hổ với tôi :) đó là chứng chỉ. Tôi phát triển cho một công ty khác và nhà phát triển ban đầu còn lại - giấy chứng nhận của anh ấy bằng cách nào đó dường như vẫn hoạt động (tôi đã thay thế nó bằng của tôi). Vì vậy, chứng chỉ hợp lệ và nó hợp lệ cho ứng dụng. Nhưng nhị phân được biên dịch bằng khóa riêng của tôi, điều đó chắc hẳn đã tạo ra sự nhầm lẫn. Cảm ơn sự giúp đỡ của bạn! – Swissdude

1

Xem câu trả lời trong https://stackoverflow.com/a/11623162/496222

Nói tóm lại: chắc chắn rằng cả hai giấy chứng nhận SSL đang ở trong một tập tin PEM riêng biệt. Việc có một tệp PEM duy nhất với cả sandbox và chứng chỉ sản xuất sẽ khiến môi trường bị lỗi.

0

cũng vui lòng kiểm tra xem thông báo đẩy đã bật Id ứng dụng của bạn

7

Đối với tôi, tôi đấu tranh này trong nhiều ngày. Sử dụng đúng chứng chỉ sản xuất và khóa, và cũng đúng cổng để gửi tin nhắn đến iPhone đang phát triển của tôi, nó đã gửi thành công ở chế độ hộp cát, nhưng không thành công với chế độ sản xuất. Đó là bởi vì cũng có hai loại mã thông báo thiết bị, mã thông báo thiết bị iPhone thử nghiệm là mã thông báo hộp cát, không thể được sử dụng trong chế độ sản xuất. Tốt hơn là sử dụng mã thông báo của thiết bị khác để kiểm tra APN sản xuất.

Lời giải thích chi tiết là here

Vấn đề phổ biến nhất là một thẻ thiết bị không hợp lệ.Nếu mã thông báo đến từ môi trường sandbox , chẳng hạn như khi bạn đang thử nghiệm xây dựng phát triển trong nhà, bạn không thể gửi nó đến dịch vụ đẩy sản xuất. Mỗi môi trường đẩy sẽ phát hành một mã thông báo khác nhau cho cùng một thiết bị hoặc máy tính. Nếu bạn gửi mã thông báo thiết bị đến môi trường không đúng, dịch vụ đẩy sẽ thấy đó là mã thông báo không hợp lệ và hủy thông báo.

+0

Người đàn ông này đã chết ngay .. Cảm ơn bạn đã chia sẻ thông tin này. – bottus

0

Điều này giải quyết được vấn đề của tôi, đảm bảo đặt giá trị chính xác cho kGGLInstanceIDAPNSServerTypeSandboxOption. Đối với chế độ Phát triển được đặt thành CÓ và Đối với chế độ sản xuất 'KHÔNG'.

+0

Tôi nghĩ điều này dường như là dành cho Google Cloud Messaging? https://developers.google.com/cloud-messaging/ios/client – Nick

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