2011-10-12 34 views
15

Xin chào Tôi mới sử dụng IPhone.Sự cố thông báo đẩy trong phân phối Adhoc

Tôi đang làm việc trên ứng dụng Iphone nhận thông báo đẩy thành công với môi trường phát triển, nhưng không nhận được thông báo trong phân phối adhoc.

Tôi có cả hai chứng chỉ, tức là phát triển sản xuất &.

Bất cứ ai có thể cho tôi biết tôi đang thiếu gì?

Trả lời

43

Như tôi đã đăng tải ngày hôm qua là câu trả lời cho câu hỏi giống nhau: (prev. answer)

tôi đã vấn đề tương tự. Sau khi thực hiện một số bài kiểm tra tôi đạt đến kết luận sau:

  1. Nếu ứng dụng (mà đã được biên soạn với development provision profile) được cài đặt trên thiết bị như vậy có development token và bạn nên gửi push đến thiết bị đó sử dụng development certificate.

  2. Nếu ứng dụng (được biên dịch với distribution provision profile) được cài đặt so với thiết bị như vậy có production token và bạn nên gửi đẩy đến thiết bị đó bằng cách sử dụng production certificate.

Và, Nếu ứng dụng của bạn vẫn chưa được công bố, tôi nghĩ rằng APNS sẽ không chấp nhận production certificate, vì vậy có lẽ bạn sẽ không thể gửi push to apps ad-hoc của bạn.

Bạn có thể làm gì? Ví dụ: gửi ứng dụng đến người thử nghiệm của bạn được biên dịch với development certificate.

CẬP NHẬT: Tôi đã học được câu hỏi này một lần nữa và tìm thấy một số thông tin thú vị:

  1. Tải Ad-hoc provision profile của bạn.
  2. Mở hồ sơ cung cấp từ 1. bằng trình chỉnh sửa văn bản.
  3. Tìm kiếm các dòng <key>aps-environment</key> <string>production</string>
  4. Kiểm tra giá trị của khóa aps-environment. Có phải bằng production?
  5. Nếu có thì bạn nên gửi thông báo đẩy ứng dụng đặc biệt của bạn bằng production certificate.

    Nếu giá trị là development thì bạn nên gửi thông báo đẩy ứng dụng đặc biệt với development certificate.

  6. Bây giờ, hãy mở Cổng cấp phép iOS ->App IDs. Chọn ứng dụng của bạn.
  7. Kiểm tra xem Production Push SSL Certificate có được bật hay không.

Nếu điều này không giúp bạn thì hãy cố gắng cập nhật tiểu sử cung cấp đặc biệt của bạn.

+0

Tôi nghĩ u không rõ ràng với những gì tôi đã nói, nó hoạt động cho cấu hình phát triển nhưng không phải cho distribution.I adhoc cũng đang sử dụng 'ứng dụng pushmebaby' để tạo notification.Thanks –

+0

Tôi hiểu rõ bạn. Đọc điểm thứ hai của tôi: 2. Nếu ứng dụng của bạn không được xuất bản trong AppStore Tôi không chắc chắn rằng bạn có thể sử dụng chứng chỉ sản xuất. – Nekto

+0

Tôi cũng đã được thử nghiệm với chứng chỉ phát triển và hồ sơ phân bổ adhoc nhưng nó vẫn không hiển thị bất kỳ thứ gì. –

1

Thông báo đẩy đôi khi là nhức đầu và được tạo thành từ nhiều yếu tố.Nếu bạn bỏ lỡ điều gì đó trên đường đi, PNS của bạn sẽ không hoạt động và sẽ rất khó hiểu tại sao. Theo quy tắc chung, hãy xem danh sách kiểm tra sau:
- Chứng chỉ đẩy và khóa cá nhân được tạo chính xác với ID ứng dụng chính xác (cùng với ID ứng dụng được đính kèm).
- Cả chứng chỉ và khóa cá nhân được lấy từ cùng một chứng chỉ PNS đã tải xuống.
- Cả hai tệp đều được ghép chính xác thành tệp .pem.
- Ứng dụng của bạn xử lý các thông báo đẩy khi chúng xuất hiện, trong khi ứng dụng đang hoạt động.

Trong mọi trường hợp, tôi khuyên bạn nên làm theo hướng dẫn tốt, chẳng hạn như: http://mobiforge.com/developing/story/programming-apple-push-notification-services từng chữ. Chúc may mắn!

+0

Cảm ơn bạn đã hướng dẫn, tôi đã làm theo tất cả các bước. Tôi không cần tệp .pem vì tôi đang sử dụng ứng dụng 'pushmebaby' chỉ yêu cầu chứng chỉ. –

0

Khi tôi hiểu điều đó, bạn không thể gửi thông báo đến Ad Hoc build với chứng chỉ phát triển. Như bạn có thể tưởng tượng kịch bản này là ok UNTIL bạn phát hành ứng dụng. Sau khi ứng dụng được phát hành, gửi thông báo đến bản dựng quảng cáo có chứa Cert sản xuất cũng sẽ gửi chúng tới người nắm giữ ứng dụng của bạn. Cách tôi nhận được thông tin này là:

  1. Tạo ứng dụng mới trong Apple có cùng đường cơ sở với ứng dụng trong itunes.
  2. Tạo khóa sản xuất mới và chứng nhận cho ứng dụng "ma" này.
  3. Tạo ứng dụng mới bằng khóa sản xuất mới và thử nghiệm với bản dựng đó.

Bây giờ bạn sẽ có một ứng dụng mà bạn có thể tạo để kiểm tra các thông báo cụ thể. Không phải là một giải pháp thanh lịch nhưng nó hoạt động.

+0

Không chắc chắn lý do tại sao điều này đã được bình chọn, tạo ra một gói riêng biệt là một cơ chế hợp pháp để thử nghiệm beta với các nền tảng như HockeyApp. – Leon

1

Tôi đã gặp phải điều tương tự và dành một chút thời gian để tìm ra. Tôi tạo ra một chứng chỉ sản xuất mới, tạo ra một hồ sơ cung cấp Ad-Hoc (để tôi có thể kiểm tra với thông báo đẩy đi qua sản xuất) và không có gì làm việc cả.

Tôi đã cố định tập lệnh đẩy (phía máy chủ) tương ứng (sử dụng tệp .pem mới được tạo và kết nối với ssl: //gateway.push.apple.com: 2195). Kịch bản đã cho tôi biết rằng thông báo đã được gửi nhưng thiết bị của tôi không thực sự nhận được thông báo.

Hóa ra vấn đề thực sự ngớ ngẩn! Rõ ràng các thẻ thiết bị thay đổi khi sử dụng ứng dụng với chứng chỉ mới (hoặc thông qua Ad-Hoc). Tôi chỉ có thể suy đoán lý do là tại sao họ thay đổi, nhưng tất cả tôi biết là một khi tôi nắm lấy mã thông báo chính xác và sử dụng kịch bản thử nghiệm của tôi để gửi một thông báo cho thiết bị, tôi hiểu rồi!

+0

+1. Tôi cũng phải sử dụng ssl: //gateway.push.apple.com: 2195 (cần thiết để loại bỏ sandbox) và phải sử dụng mã thông báo thiết bị cho chứng chỉ sản xuất. – Geek

0

Tôi vừa vượt qua một vấn đề rất giống và nó trở thành một cái gì đó có lẽ nên đã được rõ ràng nhưng tôi sẽ đăng nó ở đây chỉ trong trường hợp bất cứ ai khác là như daft như tôi.

Tôi đang sử dụng MoonAPNS và có thể nhận thông báo phát triển chứ không phải sản xuất. Sau vài ngày đi vòng vòng tôi trở lại dòng này:

PushNotification push = new PushNotification(true, p12file, p12password); 

Có trước đây bỏ qua true tham số, một debug thông qua mã máy chủ cho thấy điều này đã được thiết lập hay không để sử dụng máy chủ Sandbox - D' Oh! Chuyển nó sang false và tất cả đều tốt.

Đạo đức của câu chuyện: đừng quên trỏ thông báo của bạn tại máy chủ không phải hộp cát!

1

Ngoài đoán từ Nekto ...

Và, Nếu ứng dụng của bạn vẫn chưa được công bố, tôi nghĩ rằng APNS sẽ không chấp nhận chứng chỉ sản xuất, vì vậy có lẽ bạn sẽ không có khả năng gửi đẩy các ứng dụng đặc biệt của bạn.

Trong thời gian chờ đợi, tôi có thể xác nhận rằng có thể nhận thông báo đẩy trên các ứng dụng đặc biệt, ngay cả khi ứng dụng chưa được xuất bản.

0

Tôi gặp vấn đề tương tự và sau rất nhiều tinh hoàn cuối cùng, tôi đã có vấn đề.

Đó là do quá trình sản xuất của Apple không cho phép tệp P12 chứa dữ liệu khóa cá nhân nữa. Nhưng máy chủ apns phát triển sẽ chấp nhận tệp P12 những gì bao giờ nếu chứa khóa riêng.

Vì vậy, khi bạn xuất tệp P12 từ keychain chỉ cần chọn tệp Giấy chứng nhận sản xuất của bạn mà không có khóa riêng và bạn sẽ nhận được thông báo trên ứng dụng adhoc của mình (ngay cả khi chưa được xuất bản).

1

Có danh sách kiểm tra nghiêm ngặt mà bạn nên ghi nhớ trong khi kiểm tra tính năng đẩy cho môi trường phát triển. Hầu hết trong số họ đã được đề cập ở trên. Nhưng đây là một điều đã giải quyết vấn đề của tôi và tôi muốn chia sẻ. Tôi hi vọng nó giúp ích cho ai đó. Và đó là:

Xin lưu ý ID thiết bị mã thông báo, khác với sự phát triển & & Môi trường sản xuất.

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 
     NSString *deviceTokenStr = [[[[deviceToken description] 
             stringByReplacingOccurrencesOfString: @"<" withString: @""] 
            stringByReplacingOccurrencesOfString: @">" withString: @""] 
            stringByReplacingOccurrencesOfString: @" " withString: @""]; 
     UIAlertView *alert= [[UIAlertView alloc]initWithTitle:deviceTokenStr message:Nil delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
     [alert show]; 
} 
0

trả lời cho 2016.10.13

Tôi có vấn đề tương tự mà sau khi tôi thay đổi quan trọng sau đây hướng dẫn: https://support.magplus.com/hc/en-us/articles/203808718-iOS-Creating-a-Push-Notification-Certificate

Nhưng vẫn không thể làm việc Sau khi tôi kiểm tra mã máy chủ và phát hiện ra rằng

Ssl: ssl://gateway.sandbox.push.apple.com:2195 Phải thay đổi thành ssl://gateway.push.apple.com:2195

Sau sự thay đổi đó, tôi có thể nhận được thông báo

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