Làm cách nào để sửa lỗi không có chuỗi quyền lợi 'aps-môi trường' hợp lệ được tìm thấy cho ứng dụng này trong Xcode 4.3?


153

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ã)

nhập mô tả hình ảnh ở đây

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):

nhập mô tả hình ảnh ở đây

Đã 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):

nhập mô tả hình ảnh ở đây

Và id gói hai vị trí được đặt Tôi có cái này:

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đâ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ì.

Câu trả lời:


94

Nếu bạn đã tạo hồ sơ cung cấp của mình trước khi định cấu hình app IDcho việc đẩy, hãy thử tạo lại hồ sơ cung cấp.

Cổng cung cấp iOS -> Cấp phép -> Chứng chỉ của bạn -> EDIT -> Chỉnh sửa -> Tải xuống cung cấp mới

Đã làm cho tôi. Bây giờ tôi có thể sử dụng đẩy.


bạn có thể rõ ràng hơn về chính xác những gì "tái tạo hồ sơ cung cấp" đòi hỏi? Đây có phải là một bước trong XCode, trong Cổng thông tin cung cấp, ở đâu? cảm ơn!
JWL

2
Trong cổng thông tin. Chỉ cần thêm hoặc xóa một thiết bị và việc cung cấp của bạn sẽ được tạo. Sau đó, nhấp đúp chuột và cài đặt trong móc khóa của bạn.
giúp

xin lỗi nếu tôi dày đặc, nhưng thêm / xóa nó trong Thiết bị? Hoặc một nơi nào đó bên dưới Hồ sơ cung cấp thực tế trong câu hỏi, và nếu vậy chính xác ở đâu?
JWL

Thêm hoặc xóa thiết bị là một mẹo để tạo lại việc cung cấp của bạn. Bạn cần tạo lại một cái để sử dụng thông báo đẩy, bởi vì nó được liên kết với id ứng dụng và xác nhận đẩy ..
giúp

69

Trước hết, bạn không cần tệp quyền lợi trừ khi bạn thêm các cặp khóa / giá trị tùy chỉnh không tồn tại trong hồ sơ cung cấp. Khi ứng dụng của bạn được xây dựng, mọi quyền lợi từ hồ sơ cung cấp sẽ được sao chép vào ứng dụng.

Cho rằng bạn vẫn thấy một thông báo lỗi về các quyền bị thiếu, tôi chỉ có thể giả sử các tùy chọn ký mã không chính xác trong cài đặt bản dựng.

Bạn cần đảm bảo rằng cấu hình chính xác được chọn cho cấu hình "Gỡ lỗi" và để an toàn, bạn đã chọn cấu hình chính xác cho cả "Gỡ lỗi" và nút con có nhãn "Bất kỳ SDK iOS nào":

nhập mô tả hình ảnh ở đây

Mặc dù ảnh chụp màn hình này hiển thị cấu hình "Nhà phát triển tự động" được chọn, hãy chọn cấu hình cung cấp chính xác mà bạn muốn từ trình đơn thả xuống, chỉ nhằm mục đích thử nghiệm. Có thể là Xcode đang tự động chọn một hồ sơ khác với hồ sơ bạn muốn.

Ngoài ra, hãy chắc chắn thực hiện một bản dựng sạch, xóa hoàn toàn ứng dụng khỏi thiết bị của bạn, v.v ... Điều này chỉ để đảm bảo bạn không có một số lông tơ cũ treo xung quanh.


Mỗi số 2 trong bài viết của tôi, tôi nghĩ nó được đặt chính xác, mặc dù tôi đã thêm một ảnh chụp màn hình để xác minh. Tôi cũng đã thử gỡ bỏ hoàn toàn ứng dụng và tắt nó trong 2 ngày theo khuyến nghị mà tôi thấy ở đâu đó rằng phải mất một ngày để một số thông tin được đặt lại (vâng, tôi đang nắm ống hút!?). Nhưng khi bạn nói "Bạn cần chắc chắn rằng cấu hình chính xác được chọn cho cấu hình" Gỡ lỗi "" chính xác ý bạn là gì - tôi sẽ chọn nó ở đâu?
jwl

Nếu bạn nhấp vào phần "Nhà phát triển iPhone" hoặc bất cứ thứ gì được đặt làm giá trị hiện tại, bạn sẽ thấy danh sách thả xuống của tất cả các cấu hình cung cấp mà Xcode biết. Đảm bảo chọn đúng, hoặc mục "Nhà phát triển tự động" đang chọn đúng. Việc thả xuống sẽ cho bạn thấy tất cả mọi thứ.
Mike Weller

Và bạn có chắc rằng bạn có hồ sơ cung cấp mới nhất? Có thể là bạn có một phiên bản cũ, từ trước khi bật tính năng đẩy?
Mike Weller

2
Vâng, vâng tôi tin như vậy. Những gì tôi đã làm để có được hồ sơ cung cấp mới là, trong Xcode Organizer, xóa hồ sơ khỏi cả Thư viện và khỏi thiết bị, sau đó quay lại trên màn hình Thư viện, nhấp vào Làm mới. Điều này đã kéo nó trở lại từ Cổng thông tin cung cấp. Sau đó tôi đã thêm nó vào thiết bị. Và như được hiển thị ở trên, tệp nội dung XML của tập tin Mobileprovision hiển thị các quyền lợi chính xác
jwl

3
Ach, xin lỗi. Cần phải có -trước một con đường : codesign -d --entitlements - /path/to/my.app. Tại thời điểm này cũng đáng để kiểm tra lại xem bạn có trong thư mục Debug-iphoneos không, vì "Show In Finder" đôi khi có thể đưa bạn đến sai vị trí.
Mike Weller

64

Tôi đã phải đối mặt với vấn đề này trong Xcode 8. Bạn phải bật Target Target> các khả năng của Wap> thông báo đẩy. Kiểm tra ảnh chụp màn hình.

nhập mô tả hình ảnh ở đây


1
Điều này giúp tôi !!!! Chỉ cần nhấp vào nút ... giải quyết vấn đề của tôi mà tôi gỡ lỗi hàng giờ ... Xcode8, quá.
Veck Hsiao

3
OMG cảm ơn bạn! Hãy đến Apple, cung cấp cho chúng tôi một thông báo lỗi hợp lý hơn!
Ferran Maylinch

Xcode 8 đã tắt thông báo đẩy cho ứng dụng của tôi, vì vậy giải pháp này đã hoạt động.
Kevin

1
Cảm ơn bạn, tôi đã thực hiện các bước thiết lập khác 3 lần trước khi tôi tìm thấy điều này. Tôi cảm thấy như một thằng ngốc, nhưng cũng có những công cụ rất tệ khi cho phép điều này trở thành vấn đề.
Collin Flynn

bạn đã cứu ngày của tôi, bạn đời!
oskarko

47

Cách dễ nhất là làm điều này từ tài khoản của bạn bằng Xcode:

Trụ sở trên Xcode -> Tùy chọn -> Chọn tab Tài khoản -> Xem chi tiết -> Nhấn nút làm mới ở phía dưới bên trái -> Xong.

Xây dựng lại và nó sẽ hoạt động.


19

Ok, tôi đã đối mặt với vấn đề trước đây. Vì thông báo đẩy yêu cầu triển khai máy chủ, đối với tôi, việc tạo lại hồ sơ không phải là một tùy chọn. Vì vậy, tôi tìm thấy giải pháp này mà KHÔNG tạo hồ sơ cung cấp mới.

Xcode không chọn đúng hồ sơ cung cấp chính xác mặc dù chúng tôi đang chọn đúng.

Đầu tiên đi đến tổ chức. Trên tab Thiết bị, Cung cấp hồ sơ từ danh sách Thư viện, chọn cấu hình dự định chúng tôi đang cố gắng sử dụng. Nhấp chuột phải vào nó và sau đó "Hiển thị hồ sơ trong Finder".

nhập mô tả hình ảnh ở đây

Cấu hình đúng sẽ được chọn trong cửa sổ Finder đã mở. Lưu ý tên.

nhập mô tả hình ảnh ở đây

Bây giờ hãy vào Xcode> Log Navigator. Chọn bộ lọc cho "Tất cả" và "Tất cả tin nhắn". Bây giờ trong giai đoạn cuối (Xây dựng mục tiêu), hãy tìm bước gọi là "Quá trình sản xuất gói" mở rộng nó. Lưu ý tên hồ sơ cung cấp. Họ KHÔNG nên khớp nếu bạn gặp lỗi. nhập mô tả hình ảnh ở đây

Bây giờ trong cửa sổ Opened Finder xóa hồ sơ cung cấp giả mạo mà Xcode đang sử dụng. Bây giờ xây dựng lại. Các lỗi cần được giải quyết. Nếu không lặp lại quá trình để tìm một hồ sơ giả mạo khác để loại bỏ nó.

Hi vọng điêu nay co ich.


Đây là lỗi của tôi nhưng đã sửa nó bằng phương pháp này. Tôi đã vô tình đặt vào hộp thông tin một mã định danh khác với những gì tôi đã tạo chứng chỉ.
JavaCoderEx

18

Câu trả lời là: bắt đầu lại, làm mọi thứ giống nhau nhưng tạo một hồ sơ cung cấp mới và cài đặt nó. Điều đó đã làm việc. Kiểm tra tất cả các chi tiết (quyền lợi trong cung cấp điện thoại di động) trông giống hệt như mọi thứ trong câu hỏi của tôi ở đây. Nhưng bây giờ nó hoạt động. Táo: NƯỚC?

Tất nhiên, rõ ràng là phải làm điều này nếu có thể xóa hồ sơ cung cấp. Nhưng vì điều đó là không thể, tôi không muốn làm lộn xộn đội ngũ của chúng tôi với một loạt các hồ sơ thử nghiệm. Tuy nhiên, cuối cùng vẫn mất kiên nhẫn và dù sao cũng đã thử, và nó đã kết thúc công việc. Những gì


Tạo một hồ sơ mới và "làm bẩn" hồ sơ cũ như đã nói trong câu hỏi SO khác này có hiệu quả với tôi: stackoverflow.com/questions/5681172/
Lỗi

Tất cả những gì tôi phải làm là xóa hồ sơ cung cấp hiện có ra khỏi cổng và tạo lại nó. Bạn có thể xóa hồ sơ ngay sau khi cập nhật để không cần tạo id ứng dụng mới.
odyth

Hồ sơ cung cấp mới với cùng id ứng dụng và chứng chỉ phân phối đã khắc phục sự cố cho tôi. +1 :)
Azik Abdullah

18

Xóa hồ sơ cung cấp cũ khỏi XCode trong Trình tổ chức.

Sau đó, tạo hồ sơ cung cấp mới cho cùng một id gói trong cổng cung cấp iOS (sau khi bạn đã bật tính năng đẩy).

Nhập cấu hình cung cấp mới trong XCode, đặt nó trong cài đặt xây dựng ứng dụng của bạn.

Xây dựng, chạy, nó hoạt động.

Tôi vừa làm nó.

Tôi mất 10 phút từ lỗi đến thành công.


Đây là một trong những làm việc cho tôi quá. Chỉnh sửa hồ sơ cung cấp cũ và tải xuống không làm việc cho tôi. Cảm ơn!
prageeth

Là một phụ lục hữu ích, thay vì nhận một hồ sơ cung cấp mới, tôi chỉ đơn giản là có thể xóa cái cũ
ritmatter

1
Tôi rất khuyên bạn không nên làm nó bằng tay. Sử dụng github.com/fastlane/PEM .
fatuhoku

16

XCode 6.1.1 và nhiều tài khoản nhà phát triển apple

Một câu trả lời khác cho sự pha trộn khá toàn diện này: tôi đã gặp lại vấn đề này ngày hôm nay và lần này là do tôi có nhiều tài khoản táo. Trước tiên tôi cần thêm tài khoản nhà phát triển thứ 2 trong XCode> Tùy chọn> Tài khoản> +

Đảm bảo rằng Khả năng thông báo đẩy được BẬT

Tiếp theo tôi cần thực sự kích hoạt Mua trong ứng dụng một cách rõ ràng trong ứng dụng (trước đây tôi không cần phải làm điều này). XCode> (cửa sổ ứng dụng)> Mục tiêu> Khả năng> Mua trong ứng dụng BẬT (và ở giai đoạn này tôi đã được cung cấp tùy chọn để chọn chứng chỉ chính xác)

Lưu ý rằng tôi đã thêm chứng chỉ kích hoạt bằng cách nhấp đúp vào chứng chỉ trong Finder.

nhập mô tả hình ảnh ở đây


Tôi đã suy nghĩ về điều này, tôi đoán khi tôi chuyển sang Xcode 8 beta thì nó đã tắt công tắc thông báo đẩy của tôi hoặc một cái gì đó. Cảm ơn
inVINCEable

Cảm ơn, đây là lý do tại sao tôi có vấn đề này. ID ứng dụng của tôi được bật cho mua trong ứng dụng, trung tâm trò chơi, v.v., nhưng trong Xcode / khả năng, tất cả chúng đều bị tắt trước đó, không vấn đề gì. Kể từ khi cập nhật lên Xcode 8, tôi gặp vấn đề này. Sau khi kích hoạt IAP và trung tâm trò chơi trong Xcode, vấn đề đã biến mất!
Ethan Long

11

(Xcode 5) Chà, sau khi dành một giờ tôi đã giải quyết được vấn đề của mình. Ngay cả khi bạn tạo lại tệp cung cấp trong Xcode 5, bạn vẫn nên cập nhật thủ công tài khoản của mình. Tôi chỉ thay đổi tệp cung cấp trong tab Trình tổ chức không hoạt động, Xcode tiếp tục được xây dựng với tệp cung cấp cũ.

Vậy đi

Xcode> Tùy chọn> Tài khoản> Xem chi tiết (Chọn tài khoản của bạn)

Sau đó làm mới các tập tin cung cấp của bạn.


7

Vấn đề của tôi chỉ đơn giản là tôi đã ký với hồ sơ cung cấp ký tự đại diện do Xcode quản lý.

Sau khi tôi tạo một hồ sơ dành riêng cho ứng dụng (và tải xuống nó, nhấp đúp vào nó và đảm bảo Cài đặt bản dựng được đề cập đến nó), tôi đã nhận được thành công mã thông báo thiết bị APNS.


Tôi đã có vấn đề này là tốt. Xcode 5 khá tốt trong việc cập nhật bất kỳ hồ sơ cung cấp nào. Tôi đã thêm dịch vụ APNS sau này trong quá trình phát triển. Bạn phải chắc chắn rằng người đăng ở trên chỉ ra rằng hồ sơ cung cấp của bạn thực sự là hồ sơ duy nhất cho ứng dụng bạn đang làm việc chứ không phải là một thẻ hoang dã.
Michael

@Michael, làm thế nào để bạn chắc chắn về điều này? Tôi đã thử thay đổi nó trong cài đặt bản dựng của mình (bên dưới Ký mã), hiện đang được đặt thành không. Khi tôi chọn hồ sơ chính xác và xây dựng, nó xuất hiện một lỗi và sau đó quay trở lại hồ sơ cung cấp ký tự đại diện.
Ian Jamieson

@ian bạn đang gặp lỗi gì? Bạn có chắc chắn đó là một hồ sơ hợp lệ?
Michael

Ah, tôi đã sắp xếp nó, tôi cần tải lại chứng chỉ chính xác cho máy Mac của mình. Đây dường như là một vụ lừa đảo. Cảm ơn.
Ian Jamieson

Vui mừng khi nghe nó. Đó là những gì tôi thường làm khi có vẻ như các cài đặt là chính xác. Làm lại tất cả các certs. Có vẻ là vấn đề nhiều lần hơn không.
Michael

6

Tôi có cùng một vấn đề là mọi người khác và đã thử tất cả các thủ thuật trên, không có gì hiệu quả. Tôi thậm chí đã xóa và bắt đầu mới với một tài khoản nhà phát triển khác.

Những gì làm việc cho tôi cuối cùng là

  1. Làm như đề xuất ở trên và tạo ID APP
  2. Sau đó tạo hồ sơ cung cấp
  3. KHÔNG sử dụng hồ sơ ký tự đại diện nhóm (được quản lý bởi xcode one) trong phần phát triển của việc cung cấp. Bạn cần tạo một tài khoản riêng bằng ID ứng dụng mà bạn đã kích hoạt thông báo đẩy. Bằng cách này khi bạn phát triển nó sẽ có chức năng thông báo đẩy được tích hợp.

Tôi không biết liệu bạn có thể kích hoạt ứng dụng đó cho ứng dụng ký tự đại diện hay không, nhưng sau khi thử ít nhất 12 đề xuất khác nhau và mất vài ngày, tôi hy vọng điều này sẽ giúp được ai đó


2
Nhưng điều này không thêm gì vào các câu trả lời hiện có, đã đưa ra lời khuyên này. Rõ ràng một ứng dụng đẩy cần hồ sơ riêng của mình; các tài liệu khá rõ ràng rằng hồ sơ ký tự đại diện không thể được sử dụng cho bất kỳ ứng dụng nào cần các quyền lợi đặc biệt.
matt

1
Tôi đã làm điều này, nhưng ứng dụng của tôi sẽ chỉ chọn hồ sơ cung cấp ký tự đại diện, tôi không thể buộc ứng dụng đó chọn thông báo đẩy được bật.
Ian Jamieson

3

Bạn đề cập đến một hồ sơ cung cấp nhưng tôi không thấy bất kỳ đề cập nào về Hồ sơ đẩy của Apple.

Để sử dụng Push, bạn phải có một hồ sơ đẩy (có hai, một để phát triển và một để phát hành). Sau khi bạn đã tạo, bạn sẽ cần đảm bảo nó chứa các chứng chỉ liên quan (xem phần EDIT bên dưới).

Đây là một hướng dẫn tuyệt vời sẽ hướng dẫn bạn qua tất cả các bước:

http://www.raywenderlich.com/3443/apple-push-notification-service-tutorial-part-12

Tôi sẽ mất nhiều giờ để viết câu trả lời chi tiết kỹ lưỡng như hướng dẫn này, vì vậy tôi sẽ không cố gắng, cũng không yêu cầu tiền thưởng khi hướng dẫn này đã tồn tại.

Tái bút: Tôi tin rằng bạn không cần quyền lợi nữa, đây là một điều kế thừa.

EDIT: Bạn cũng nên kiểm tra xem bạn có các cấu hình cần thiết trên thiết bị hay không - đi đến cài đặt, sau đó chung, hồ sơ, kiểm tra hồ sơ của bạn được liệt kê, đặc biệt là hồ sơ đẩy tất nhiên. Bạn cũng có thể kiểm tra điều này từ phần Sắp xếp của XCode. Trong Trình tổ chức có hai phần cho biết Hồ sơ cung cấp - một phần ở phía trên bên trái trong Thư viện (đây là cấu hình trong XCode mà bạn sử dụng để ký, v.v.) Ngoài ra, bạn sẽ thấy một phần gọi Hồ sơ cung cấp cho thiết bị được kết nối, đây là là hồ sơ được cài đặt trên thiết bị cầm tay. Nếu bạn chưa cài đặt chúng trên thiết bị cầm tay, bạn có thể tải xuống từ trang web của cổng cung cấp, sau đó nhấp vào nút Thêm ở dưới cùng của cửa sổ Sắp xếp.

Trong khi trong cổng cung cấp, bạn cũng nên kiểm tra xem Apple Push Profile có bao gồm các chứng chỉ: - nhấp vào Cung cấp trên menu bên trái - bạn sẽ thấy danh sách hồ sơ của mình, chọn EDIT hồ sơ đẩy Apple - bạn sẽ thấy một phần chứng chỉ, với một danh sách các nhà phát triển hoặc người thử nghiệm, v.v. bạn có trong dự án của mình, đảm bảo hộp kiểm được kiểm tra cho họ. - bạn cũng sẽ thấy một phần thiết bị, đảm bảo thiết bị bạn đang thử nghiệm đã được thêm vào.

Nếu bạn có bất kỳ cấu hình cũ nào trong XCode hoặc trên thiết bị, hãy xóa chúng và tải xuống / làm mới / cài đặt tất cả các cấu hình mới từ cổng cung cấp


Nếu quyền lợi là một di sản thì tại sao tôi nhận được một tin nhắn phàn nàn về việc không có quyền lợi? Tôi đã làm theo hướng dẫn được liên kết đến bức thư mà không có may mắn ... cảm ơn.
jwl

Ngoài ra, tôi đã thêm một số thông tin về tệp huy động thực tế có thể hữu ích.
jwl

đó là sự thật, tôi thậm chí không thiết lập bất kỳ .entitlements nào để đẩy thông báo thành công. Một điều làm tôi vấp ngã khi tôi đang làm điều đó là tôi cần tải xuống thủ công huy động, sau đó đi đến cài đặt cài đặt và thay đổi nhận dạng để khớp với cái vừa tải xuống, trong trường hợp của tôi, rõ ràng Xcode đang chọn huy động thẻ hoang dã.
X Chém

Tôi cũng đã nhận được một thông báo lỗi về quyền lợi một thời gian trước đây, đó là một cá trích đỏ, xem phản hồi của Mike Wellers, đó là những gì tôi đã làm trong trường hợp của mình.
Gruntcakes

Tôi đã cập nhật câu trả lời với một số điều nữa để bạn kiểm tra.
Gruntcakes

2

Ran vào vấn đề tương tự bản thân mình. Đối với tôi, vấn đề là tên sản phẩm của tôi ($ TARGET_NAME) không được viết hoa giống như cách trình bày trong chứng chỉ do apple cung cấp. Ví dụ: tôi đã có com.companyid.APNDemo trong khi chứng chỉ Apple đang sử dụng com.companyid.apndemo.

Tôi đã thay đổi mục tiêu của mình thành chữ thường và nó đã hoạt động. Lưu ý: Manh mối cho tôi là cài đặt mã trong Cài đặt bản dựng được đặt thành chứng chỉ nhà phát triển mặc định của tôi; không phải là hồ sơ cung cấp APNTest.


1

Rất nhiều câu trả lời trên là chính xác. Tuy nhiên, dường như có nhiều hơn một lỗi có thể xảy ra khi xử lý việc này.

Cái tôi gặp phải là vấn đề viết hoa với ID ứng dụng của tôi. ID ứng dụng của tôi vì một số lý do không được viết hoa nhưng ứng dụng của tôi thì có. Khi tôi tạo lại ID ứng dụng với viết hoa chính xác, tất cả đều hoạt động trơn tru. Hi vọng điêu nay co ich. Thất vọng như địa ngục mặc dù.

PS nếu nó vẫn không hoạt động, hãy thử chỉnh sửa Trường nhận dạng ký mã bằng tay với "chỉnh sửa". Thay đổi dòng thứ hai với tên của tên hồ sơ cung cấp chính xác.


1

Tôi phải mất hàng giờ để giải quyết nó. Cho rằng ai đó đang sử dụng tập lệnh tùy chỉnh để ký và đóng gói trong khi những người khác đang sử dụng xcode, chỉ có một cách để kiểm tra xem cái gì đã kết thúc trong ứng dụng của bạn. Kết xuất quyền lợi của bạn với

codesign --display --entitlements :- path/to/MyApp.app

và kiểm tra aps-environmentapplication-identifier.


tôi đã phải đối mặt với cùng một vấn đề. Chỉ muốn hỏi, liệu đường dẫn đến ứng dụng có được cài đặt trên ứng dụng giả lập không?
Ajeet

không, đó là đường dẫn của ứng dụng được biên dịch cho thiết bị thực tế, trong thư mục xây dựng xcode.
lùn

1

Lỗi này có thể xảy ra khi chứng chỉ của bạn đã hết hạn.

Giải pháp là gia hạn chứng chỉ và ký đơn với nó.


1

Bạn cần đảm bảo rằng bạn có trong hồ sơ cung cấp của mình ( https://developer.apple.com/account/ios/profile/ ) hồ sơ Phân phối iOS.

Khi bạn tải lên từ xCode lên App Store, hãy đảm bảo bạn có môi trường aps trong các quyền lợi. Nếu không, hãy tải xuống từ Xem tài khoản -> Xem chi tiết -> Tải xuống tất cả.


1

Tôi đã có một vấn đề tương tự. Tôi đã nảy giữa XCode 7 và 8 vì nhiều lý do. Khi bạn sử dụng 8 để xây dựng, bạn sẽ cần sử dụng 8. Tôi chỉ đơn giản sử dụng Xcode 8 và áp dụng một số thay đổi được đề xuất ở trên và nó đã hoạt động.


1

tạo lại các tập tin tạm thời đã sửa chữa tất cả các vấn đề của tôi.


0

Dường như có điều gì đó kỳ quặc với các quyền lợi 'tự động' trong Xcode 4.6.

Có một tệp Entituity.plist cho mỗi SDK tại:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/Entitlements.plist

Một giải pháp khắc phục tôi đã đưa ra là chỉnh sửa tệp này và thêm khóa môi trường aps lén lút theo cách thủ công như vậy:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>application-identifier</key>
    <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
    <key>aps-environment</key>
    <string>development</string>
    <key>keychain-access-groups</key>
    <array>
        <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
    </array>
</dict>
</plist>

Sau đó, Xcode đang tạo tệp Xcent chính xác, chứa khóa môi trường aps tại:

/Users/mySelf/Library/Developer/Xcode/DerivedData/myApp-buauvgusocvjyjcwdtpewdzycfmc/Build/Intermediates/myApp.build/Debug-iphoneos/myApp.build/myApp.xcent

Bạn có thể xác định vị trí nơi tệp Xcent của bạn được tạo bằng Trình điều hướng nhật ký của Xcode,
tìm "Quy trình sản phẩm đóng gói".

Thật không may, đây là cách duy nhất tôi tìm thấy để khắc phục vấn đề .
(và cuối cùng có thể nhận được mã thông báo đẩy ngay bây giờ)

Chỉ cần tự hỏi nếu một giải pháp thanh lịch hơn có sẵn.
Vui lòng xem câu hỏi SO của tôi để biết thêm chi tiết về điều đó:
Quyền tự động Xcode 4.6 không hoạt động - "không có môi trường aps hợp lệ"


0

Trước khi xóa và tạo lại AppID / Hồ sơ, hãy đảm bảo Thư viện và Thiết bị của bạn có cùng cấu hình (và chính xác) được cài đặt.

Tôi bắt đầu thấy lỗi này sau khi chuyển sang một máy tính mới. Push đã hoạt động chính xác trước khi di chuyển.

Vấn đề là (duh) rằng tôi đã không nhập các cấu hình vào thư viện Xcode trên máy mới (trong Trình tổ chức / Thiết bị trong Thư viện-> Hồ sơ cung cấp).

Điều khó hiểu là THIẾT BỊ đã có cấu hình phù hợp và chúng hiển thị như mong đợi trong cài đặt bản dựng, vì vậy mọi thứ đều chính xác ở đó, nhưng XCode LIBRARY không có chúng, vì vậy nó đã ký ứng dụng với ... ?? ?


0

Đây là những gì đã cố định nó cho tôi. (Tôi đã thử bật / tắt các khả năng bật / tắt, tạo lại hồ sơ cung cấp, v.v.).

Trong tab Cài đặt bản dựng , trong Quyền đăng nhập mã , tệp .entitlements của tôi không phải là liên kết cho tất cả các phần. Khi tôi đã thêm nó vào phần Bất kỳ SDK nào , lỗi đã được khắc phục.

nhập mô tả hình ảnh ở đây


0

Tôi đã thử tất cả các câu trả lời được liệt kê ở đây nhưng không ai giải quyết được vấn đề của tôi. Trong trường hợp của tôi, lỗi này là do lỗi ngớ ngẩn của tôi trong việc tạo Appid. Tôi đã sử dụng ID ứng dụng Wildcard thay vì sử dụng ID ứng dụng rõ ràng gây ra sự cố

Nếu bạn muốn một ứng dụng nhận thông báo từ xa (thông báo đẩy), thì bạn cần sử dụng ID ứng dụng rõ ràng , chẳng hạn như com.tutsplus.push , thay vì com.tutsplus. *

Vui lòng tìm ScreenShot, nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.