Tôi đã rất cố gắng để tạo ra một ứng dụng iOS đơn giản đơn giản có thể nhận thông báo đẩy. Lý do duy nhất của tôi để làm điều này là để thiết lập một quy trình cho một số thành viên khác trong nhóm sử dụng và không thể tìm thấy phiên bản làm việc cập nhật của các hướng dẫn đó ở đâu đó trên web. Cửa hàng của chúng tôi khá mới đối với nhà phát triển iOS, cá nhân tôi hoàn toàn thiếu kinh nghiệm với nhà phát triển iOS và Xcode. Tôi đã vấp ngã hàng chục bài hướng dẫn, bài viết và bài đăng rắc rối từ Apple và các nơi khác và tôi cảm thấy mình có thể ở gần đó ...
Đây là nơi tôi đã đến (lưu ý rằng tôi đang sử dụng Xcode 4.3 và ban đầu thử triển khai chỉ trên iOS 5.1 và tôi nhận thấy rằng một số điều có thể đã thay đổi gần đây so với các phiên bản Xcode trước đó, nhưng một lần nữa tôi mới biết tất cả này - và tìm thấy nó hoàn toàn khó hiểu và hỗn độn):
1) Tôi đã có hồ sơ cung cấp trên iPhone đã bật tính năng Đẩy
2) Trong dự án Xcode thử nghiệm của tôi, tôi đã có hồ sơ cung cấp được chọn làm danh tính ký (trong Cài đặt bản dựng> Ký mã)
3) Tôi đã có số nhận dạng gói của mình trong Tóm tắt và Thông tin> Thuộc tính mục tiêu tùy chỉnh của iOS được đặt đúng * (tôi nghĩ ??)
4) Tôi đã đăng kýForRemoteNotificationTypes được gọi trong didFinishLaunchingWithOptions của đại biểu của tôi
5) Tôi đã có didRegisterForRemoteNotutionsWithDeviceToken và didFailToRegisterForRemoteNotutionsWithError trong đại biểu của tôi, được thiết lập để ghi lại mã thông báo hoặc lỗi thiết bị tương ứng
6) Tôi đã kiểm tra Kích hoạt quyền trong Tóm tắt.
7) Ngay bên dưới Tập tin Entitlements được chọn là Tinker6 (tên dự án thử nghiệm của tôi), được tạo tự động khi tôi kiểm tra Bật Entitlements
8) Trong tệp Tinker6.entitlements tôi đã nhận được những điều sau đây (mà tôi đã thu thập được là chính xác dựa trên một số bài đăng khác nhau trên web, nhưng tôi không thể tìm thấy bất cứ điều gì rõ ràng từ chính Apple trên):
Đã cập nhật
9) Ngoài ra, tôi đã thử toàn bộ nội dung mà không cần tệp quyền lợi và về cơ bản nhận được kết quả tương tự.
10) Nội dung tệp huy động của tôi bao gồm các quyền chính xác (Tôi đã xáo trộn số lượng và tên miền nhưng có cấu trúc giống nhau):
<key>application-identifier</key>
<string>12355456A7.com.whatever.tinker</string>
<key>aps-environment</key>
<string>development</string>
<key>get-task-allow</key>
<true/>
<key>keychain-access-groups</key>
<array>
<string>12355456A7.*</string>
</array>
/ kết thúc cập nhật
Khi tôi cố chạy cái này trên thiết bị của mình, tôi gặp lỗi sau trong đầu ra Xcode:
2012-06-11 12:45:23.762 Tinker6[13332:707] Failed to get token, error:
Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment'
entitlement string found for application" UserInfo=0x24a3b0
{NSLocalizedDescription=no valid 'aps-environment' entitlement string
found for application}
Tôi đã thử thiết lập get-task-allow thành NO, aps-môi trường để sản xuất, tất cả bốn kết hợp có thể, cùng một điều.
Làm thế nào tôi có thể vượt qua điều này? Tài liệu dứt khoát ở đâu về điều này?
- nền tảng tiếp theo -
* Theo như id gói, tôi vẫn chưa rõ về cách đặt này liên quan đến Id ứng dụng và Id hồ sơ trong hồ sơ Cung cấp. Trong cổng Cung cấp dưới Id ứng dụng, tôi có cái này (một lần nữa, xáo trộn số lượng và tên miền):
Và id gói hai vị trí được đặt Tôi có cái này:
Tôi không chắc chắn những điều này là chính xác hay liệu một hoặc cả hai nên được đặt thành 12355456A7.com.whthing.tinker, mặc dù tôi đã thử những điều đó sớm hơn trong quá trình nhưng không thành công ...
Lưu ý Tôi nhận thấy có nhiều bài đăng có tiêu đề tương tự, tuy nhiên tất cả chúng dường như đã lỗi thời dựa trên tên tệp và được đưa ra, và thực tế không có giải pháp nào có vẻ hữu ích. Tôi hy vọng mức độ chi tiết cao hơn mà tôi đã đưa ra sẽ đảm bảo đáp ứng chất lượng. Tôi có thể sẽ chỉ định tiền thưởng càng sớm càng tốt và nếu bạn đưa ra câu trả lời chất lượng cao dẫn đến giải pháp, tôi sẽ trao thưởng cho bạn tiền thưởng cũng như quảng bá câu trả lời của bạn qua twitter và blog của tôi. Đặc biệt là nếu bạn đăng bài rất tốt "đây là 500 bước chính xác bạn cần để ứng dụng thông báo đẩy đơn giản hoạt động bao gồm cung cấp và bất cứ điều gì khác" trên blog của bạn hoặc bất cứ điều gì.