không tìm thấy chuỗi quyền 'aps-environment' hợp lệ nào cho ứng dụng


83

Tôi đang cố định cấu hình ứng dụng của mình để hỗ trợ thông báo đẩy, nhưng vẫn gặp lỗi này: Không lấy được mã thông báo, lỗi: Error Domain = NSCocoaErrorDomain Code = 3000 "không tìm thấy chuỗi quyền 'aps-environment' hợp lệ cho ứng dụng" UserInfo = 0x1f818fc0 { NSLocalizedDescription = không tìm thấy chuỗi quyền 'aps-môi trường' hợp lệ cho ứng dụng}

  • Tôi đã cho phép ứng dụng của mình hỗ trợ thông báo đẩy (chỉ để phát triển tại thời điểm này).
  • Tôi đã tạo hồ sơ cấp phép SAU KHI bật thông báo đẩy.
  • Giá trị nhận dạng nhóm của tôi giống như xuất hiện trong hồ sơ.
  • Trong tệp hồ sơ của tôi có một chuỗi: aps-environment
  • Tôi đảm bảo rằng trong cả dự án và mục tiêu trong phần "Nhận dạng ký mã" TẤT CẢ các giá trị được chọn làm hồ sơ cấp phép của tôi.

Có thêm ý tưởng nào không? Cảm ơn.


Không có cái nhìn sâu sắc về cái này? Nó trông giống như một cái gì đó nhiều sẽ gặp phải ...
Ba-san

Câu trả lời:


64

Trong trường hợp của tôi, nội dung trong hồ sơ cấp phép của tôi:

security cms -D -i ~/Downloads/spolskyDevelop.mobileprovision 
...
<key>application-identifier</key>
<string>P5GM95Q9VV.com.dca.spolsky</string>
<key>aps-environment</key>
<string>development</string>

Khác với những thứ trong ứng dụng đã thực sự được xây dựng (bạn có thể tìm hiểu nơi nó được xây dựng bằng cách xem tab Nhật ký của Xcode)

codesign -d --entitlements - '/Users/drew/Library/Developer/Xcode/DerivedData/spolsky-bdbtdfjeeywhqzccpmmceqvnhgtm/Build/Products/Debug-iphoneos/spolsky-ios.app'
<dict>
    <key>application-identifier</key>
    <string>Y2X6Z7Z2GR.com.dca.spolsky-ios</string>
    <key>get-task-allow</key>
    <true/>
    <key>keychain-access-groups</key>
    <array>
        <string>Y2X6Z7Z2GR.com.dca.spolsky-ios</string>
    </array>
</dict>

Điều này đúng mặc dù văn bản gợi ý "Hiện phù hợp" trong Nhận dạng ký mã cho biết cấu hình cấp phép chính xác - thật kỳ lạ, phải không? Để tạo ra một câu chuyện kỳ ​​lạ khác, cấu hình cấp phép chính xác đã được cài đặt trên thiết bị khi tôi chạy, (Cài đặt-> Chung-> Hồ sơ) khiến tôi tin rằng hồ sơ cấp phép là đúng - nhưng nó đã trở lại ID ký tự đại diện khi ứng dụng thực sự được khởi chạy .

Manh mối là sự khác biệt trong đầu ra của hai lệnh này:

Y2X6Z7Z2GR .com.dca. spolsky-iosP5GM95Q9VV .com.dca. khờ khạo

Khi tôi thực hiện khớp phần in đậm, phần in nghiêng sẽ tự động thay đổi để khớp. Ngoài ra, đầu ra của bảo mật và thiết kế mã đã được thống nhất và không còn lỗi quyền aps nữa.

Tôi đoán ở đây là XCode đang sử dụng đối sánh kiểu ký tự đại diện trên ID không phải ký tự đại diện của tôi. ("spolsky", xét cho cùng, khá gần giống "spolsky-ios") và điều này giải thích kết quả "Hiện tại phù hợp". Nhưng một cái gì đó trong chuỗi xây dựng nghiêm ngặt hơn về điều này, vì vậy nó rơi trở lại ID ký tự đại diện thực tế trong quá trình xây dựng.


7
Tôi đã gặp sự cố tương tự: 'Cài đặt bản dựng' của Dự án khác với 'Cài đặt bản dựng' MỤC TIÊU ... trong trường hợp của tôi, cài đặt Mục tiêu của tôi được đặt mặc định với cấu hình cấp phép sai.
Rob

1
Các đạo cụ khi phát hiện ra điều này, tôi đã gặp phải vấn đề tương tự.
Codemonk

1
Một trong những đồng nghiệp của tôi đã gặp sự cố cấp phép này. Tuy nhiên, tôi chỉ có thể chọn khóa cấp phép không phải ký tự đại diện sau khi đi vào cài đặt cấu hình trong Xcode và làm mới danh sách chứng chỉ / khóa cấp phép.
cbh2000

1
Cài đặt mục tiêu của tôi cho 'gỡ lỗi' đang sử dụng iOS Developer / Automatic, điều này đã khiến .app của tôi xuất hiện với Nhận dạng ký mã sai. Tôi đã phải đặt rõ ràng cài đặt của dự án & mục tiêu của mình cho cả gỡ lỗi và phát hành để sử dụng ID ký mã mới, sự cố của tôi đã được khắc phục. Đó không chỉ là hồ sơ cấp phép của bạn, mà còn phải kiểm tra các Nhận dạng ký mã đó. Không thể giải quyết được nó nếu không có những lệnh đầu cuối tuyệt vời này!
self.name

6
Chỉ đối với bản ghi: để thông báo đẩy hoạt động, người ta phải sử dụng Hồ sơ cấp phép cụ thể , với ID gói của ứng dụng chứ không phải một hồ sơ có ký tự đại diện * .
mgarciaisaia

37

Sự cố là do Hồ sơ cấp phép hiện tại không chứa thông tin APNS, vì Hồ sơ cấp phép được tạo TRƯỚC khi tạo chứng chỉ APNS.

Do đó, để giải quyết vấn đề, hãy tạo Hồ sơ cấp phép mới và chọn Hồ sơ cấp phép trong Xcode sẽ xóa lỗi.


Nó không hiệu quả với tôi. Bất kỳ con trỏ nào khác. vui lòng xem cái này: stackoverflow.com/questions/25679750/…
Ajeet

29

Tôi gặp sự cố tương tự sau khi thông báo đẩy hoạt động trên thiết bị của tôi. Có vẻ như Xcode đã lưu vào bộ nhớ cache thứ gì đó không chính xác nên việc làm mới nó đã khắc phục sự cố của tôi:

  1. Xcode -> Preferences -> Accounts
  2. Xem chi tiết cho Tài khoản nhà phát triển của bạn
  3. Chỉ cần nhấp vào Làm mới cho Hồ sơ cung cấp một vài lần. Tôi đã thấy những thay đổi này với mỗi lần làm mới. Tiếp tục làm mới cho đến khi chúng ngừng thay đổi.

Thật kỳ lạ, điều này đã làm việc cho tôi! Tôi đã làm mới cho đến khi nó ngừng cập nhật, sau đó tôi làm sạch thư mục xây dựng của mình, sau đó khởi động lại XCode. Đây là sau khi tôi xác minh ID gói trong hồ sơ cấp phép và ứng dụng đã xây dựng (Trường hợp nó khớp trong cả hai, càng khiến tôi bối rối).
Sean Michael Dorian

Không còn nút Làm mới (?) Nữa
Gerry

9

tôi gặp lỗi này và không tạo hồ sơ cấp phép mới; đã tạo một cái mới và sau đó phải khởi động lại xCode nhưng hoạt động ngay bây giờ!


9

Lưu ý rằng số nhận dạng gói phải khớp với cấu hình cấp phép theo cách phân biệt chữ hoa chữ thường . Tôi đã có một cái gì đó giống như com.FirstLast.appname khi nó đáng lẽ phải là com.firstlast.appname. Chà, điều đó khiến tôi bận rộn trong một thời gian khá dài.


Tôi đã gặp vấn đề tương tự, điều này đã khắc phục nó cho tôi.
kuba

9

Tôi đã khắc phục sự cố này bằng cách bật khả năng thông báo đẩy.

Chọn Dự án> Mục tiêu> Khả năng> Bật Thông báo đẩy

kiểm tra hình ảnh


3

Nếu sự cố này xảy ra đột ngột sau khi nâng cấp lên Xcode 8, bạn có thể tìm thấy một cảnh báo trong màn hình khả năng cho phép bạn tự động sửa lỗi này:

Chọn Dự án> Mục tiêu> Khả năng> Bật Thông báo đẩy


Đó là thứ đã cứu tôi khỏi những cơn đau đầu. Cảm ơn!
jpaljasma

2

Sản phẩm-> Clean đã làm điều đó cho tôi. Hy vọng rằng nó sẽ làm điều đó cho người khác.


tôi làm sạch cả hai. Dọn dẹp thứ cấp thông qua lệnh-option-shift-k cũng rất hữu ích.
đã vẽ ..

2

Tôi gặp phải vấn đề này trong trường hợp sử dụng không thường xuyên. Tôi đang làm việc với Xcode 6 và iOS 8. Tôi đang tạo một loạt các dự án ứng dụng hoàn toàn mới và cố gắng sử dụng lại cùng một ID gói để không cần phải thực hiện lại tất cả thiết lập phía cổng. Điều này cũng chỉ để thử nghiệm hộp cát.

Tôi sẽ thấy rằng, mặc dù quá trình thiết lập và đăng ký sẽ hoạt động tốt đối với ứng dụng đầu tiên, nhưng nếu tôi xóa ứng dụng đó khỏi thiết bị, đặt cùng một ID gói cho ứng dụng thứ hai, sau đó cố gắng đăng ký PN với ứng dụng đó, tôi sẽ nhận được lỗi này.

Giải pháp của tôi là:

  1. Xóa hồ sơ cấp phép liên quan khỏi thiết bị.
  2. Xóa cấu hình cấp phép liên quan khỏi Xcode.
  3. Đóng Xcode
  4. Nhấp đúp vào .mobileprovisiontệp đã tải xuống của tôi để cài đặt lại vào Xcode
  5. Mở dự án và triển khai nó.

Cách tiếp cận này dường như không phù hợp với bất kỳ trạng thái nào trước đó ở đó và tôi có thể đăng ký PN với ứng dụng mới / cùng một ID gói.


2

Đối với những người gặp lỗi này trong ios 10, bạn có thể thử các bước sau:

1. làm sạch dự án của bạn.
2. và kiểm tra Mục tiêu -> Khả năng -> Thông báo đẩy. Nếu nó tắt, hãy Bật nó.

Và vấn đề sẽ được giải quyết. Các bước trên giúp tôi thoát khỏi vấn đề này. Hy vọng nó sẽ hữu ích cho ai đó.


0

Hồ sơ cấp phép mới đã làm việc cho tôi. Đảm bảo sử dụng hồ sơ Nhà phát triển nếu bạn đang trong quá trình phát triển (không sử dụng Ad Hoc). Sau đó vẫn ổn, không hiểu sao cái cũ ngừng hoạt động đúng không.

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.