Thiếu quyền thông báo đẩy


126

Tôi có một ứng dụng để gửi khi bị từ chối và tôi nhận được tin nhắn

Thiếu quyền thông báo đẩy - Ứng dụng của bạn dường như đăng ký với dịch vụ Thông báo đẩy của Apple, nhưng các quyền của chữ ký ứng dụng không bao gồm quyền "môi trường aps". Nếu ứng dụng của bạn sử dụng dịch vụ Thông báo đẩy của Apple, hãy đảm bảo ID ứng dụng của bạn được bật cho Thông báo đẩy trong Cổng cung cấp và gửi lại sau khi ký ứng dụng của bạn với hồ sơ cung cấp Phân phối bao gồm quyền "môi trường aps".

Tôi đã kiểm tra provisiong ad-hoc của tôi và ở đó tôi tìm thấy môi trường và sản xuất aps, tuy nhiên, khi tôi mở dự phòng phân phối, tôi không tìm thấy như vậy.

Đây có phải là nguyên nhân của thông báo lỗi này và từ chối táo, làm thế nào tôi có thể sửa nó?

Câu trả lời:


80

Vâng, đó là nguyên nhân của sự từ chối App Store. Nếu hồ sơ cung cấp đặc biệt của bạn có khóa môi trường aps, điều đó có nghĩa là ứng dụng của bạn được cấu hình đúng trong Cổng thông tin cung cấp của Apple. Tất cả những gì bạn cần làm là xóa hồ sơ phân phối App Store trên máy cục bộ của bạn, sau đó tải xuống lại và cài đặt hồ sơ phân phối từ Cổng thông tin cung cấp. Cái mới này nên chứa khóa môi trường aps.


Chỉ cần xóa thêm sương mù, điều này khá rõ rằng "hồ sơ phân phối PHẢI có môi trường aps, v.v." và khi tôi mở cung cấp trong trình soạn thảo văn bản, tôi sẽ thấy nó nằm ở đó ...
mirageservo

Tôi có cần tạo chứng chỉ ssl mới không, đặc biệt khi tôi đã thay đổi thứ gì đó từ hồ sơ phân phối của mình?
mirageservo

2
Không, không cần chứng chỉ nhà phát triển mới. Khi bạn bật phân phối cho thông báo đẩy (một lúc nào đó bạn phải thực hiện vì hồ sơ ad hoc của bạn có khóa môi trường aps), Cổng thông tin cung cấp iTunes sẽ tạo hồ sơ phân phối cửa hàng ứng dụng mới chứa khóa môi trường aps. Bạn có thể vừa tải xuống và cài đặt mới nhất.
tom

Một điều nữa trước khi câu hỏi này đến thiên hà, tôi có cần biên dịch lại (lưu trữ lại) ipa không, vì sẽ có thay đổi trong cài đặt xây dựng dự án hoặc, tôi có thể phân phối trực tiếp ứng dụng mà không cần phải biên dịch lại không?
mirageservo

Bạn cần lưu trữ lại. Cấu hình cung cấp được liên kết với ứng dụng được nhúng vào .ipa.
tom

43

ID ứng dụng đầu tiên

đảm bảo thông báo đẩy ID của bạn cho phép ở phía sản xuất

như xuất hiện trong hình

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

Giấy chứng nhận thứ hai

từ phần sản xuất tạo hai chứng chỉ với id của bạn (bật thông báo đẩy)

App Store và chứng chỉ Ad Hoc

Chứng chỉ SSL dịch vụ thông báo đẩy của Apple (Hộp cát)

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

Hồ sơ dự phòng thứ ba

Từ phần Phân phối tạo hồ sơ App Store với id của bạn

Cuối cùng

trong khi bạn tải lên thùng của mình, bạn phải kiểm tra hồ sơ cung cấp nào được sử dụng và có nhiều quyền lợi

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

tất cả các trường hợp gây ra vấn đề này hy vọng điều này sẽ hữu ích với bạn


1
Đây là những gì tôi đã thiếu. Tôi đã phải tạo một hồ sơ cung cấp mới trong trang web của nhà phát triển apple bằng cách sử dụng ID ứng dụng với thông báo đẩy. Với hồ sơ cung cấp mới, cuối cùng, quyền lợi môi trường aps đã được thêm vào ứng dụng của tôi. Cảm ơn bạn!
M. Luisa Carrión

38

Trong XCode 8, bạn cần kích hoạt tính năng đẩy trong tab Khả năng trên mục tiêu của mình, bên cạnh việc bật mọi thứ trên các điều khoản và chứng chỉ: Xcode 8 "quyền lợi môi trường aps bị thiếu trong chữ ký của ứng dụng" khi gửi

Bài viết trên blog của tôi về điều này ở đây .


8
Đây là Apple cổ điển như vậy. Hai giờ sau khi tôi gửi bản dựng, họ gửi thông báo lỗi về một vấn đề mà tôi đã giải quyết từ lâu (bật Dịch vụ ứng dụng thông báo đẩy trong Cổng thông tin Dev) và được giải thích với một liên kết đến 404. Sau đó, nó thực sự là sự thật vấn đề là họ đã không di chuyển cài đặt của tôi khi nâng cấp lên phiên bản mới của phần mềm của họ (mà tôi đã bị khóa). Ừ
Rembrandt Q. Einstein

3
Câu chuyện tương tự ở đây. Chúng tôi gần như loại bỏ thông báo lỗi là lỗi của Apple.
Vaiden

23

Tôi nhận được thông báo này vì một lý do khác - tôi đã gửi một ứng dụng qua Xcode mà không cần tạo Hồ sơ phân phối App Store dành riêng cho ứng dụng. Tôi tin rằng Xcode tự động sử dụng hồ sơ App Store ký tự đại diện nếu bạn đã cài đặt. Nhưng một ứng dụng sử dụng Thông báo đẩy yêu cầu hồ sơ riêng.

Cách khắc phục là tạo hồ sơ Phân phối App Store mới cho ứng dụng. Sau đó, bạn tải xuống, kéo nó vào Xcode và sửa đổi Dự án Xây dựng Cài đặt> Ký mã> Phát hành để sử dụng cấu hình mới.


11

Theo dõi câu trả lời do @Vaiden đưa ra, trong Xcode 8, bạn có thể giải quyết vấn đề này bằng cách chọn mục tiêu và nhấp vào "Khắc phục sự cố". Tất nhiên, bạn vẫn sẽ cần thiết lập thông báo đẩy trong cổng thông tin dành cho nhà phát triển của Apple (bạn có thể đơn giản hóa quy trình một chút bằng cách sử dụng tùy chọn "Tự động quản lý ký", giúp bạn không gặp rắc rối khi tải xuống hồ sơ cung cấp).

Tùy chọn sửa cho tôi


8

Đối với những người gặp phải vấn đề này, những người thực sự đang sử dụng Thông báo đẩy trong ứng dụng của họ:

Công cụ đẩy của chúng tôi gần đây sắp hết hạn, vì vậy chúng tôi đã tạo ra các công cụ đẩy dev / prod mới theo cách tiêu chuẩn được Apple vạch ra (Tôi sẽ không đi sâu vào chi tiết về vấn đề này ở đây, có rất nhiều thông tin trên web khi cập nhật đẩy certs của bạn cho một năm sử dụng).

Sau khi làm như vậy, vấn đề trong câu hỏi này xuất hiện. Bất kể chúng tôi đã làm gì, chúng tôi đã nhận được email này từ Apple sau khi gửi ứng dụng của mình. Khi chúng tôi kiểm tra cài đặt Hồ sơ cung cấp phân phối của mình trong Trung tâm thành viên Apple, mọi thứ đều ổn (Push được bật cho ID ứng dụng của chúng tôi cho cả prod / dev và hồ sơ cung cấp phân phối của chúng tôi vẫn được kết nối với ID ứng dụng này, chúng tôi vừa mới tạo certs đẩy mới cho một năm nữa như là thông lệ tiêu chuẩn).

Cuối cùng, đây là những gì đã giải quyết nó cho tôi:

  1. Tạo Hồ sơ cung cấp phân phối mới trỏ đến ID ứng dụng của bạn (để lại thông tin hiện tại của bạn)
  2. Trong Xcode, làm mới hồ sơ cung cấp của bạn thông qua Cài đặt> Tài khoản> Chọn tài khoản của bạn> Chi tiết> Nhấp vào biểu tượng làm mới
  3. Tạo thủ công tệp plistlements plist cho ứng dụng của bạn:
    • Menu tệp> Tệp mới ...
    • Chọn iOS> Tài nguyên> Danh sách tài sản
    • Đặt tên cho tệp mới là "foo.entitlements" (thông thường, "foo" là tên đích)
    • Nhấp vào (+) bên cạnh "Tệp Entitlements" để thêm một mục cấp cao nhất (trình soạn thảo danh sách thuộc tính sẽ sử dụng lược đồ chính xác do phần mở rộng tệp)
  4. Đảm bảo tệp quyền lợi này đang được sử dụng trong Cài đặt bản dựng của mục tiêu (Mục tiêu> Cài đặt bản dựng> Tìm kiếm "Quyền lợi", trong CODE_SIGN_ENTITLEMENTS đặt đường dẫn đến tệp Entitlements bạn vừa thực hiện)
  5. Đảm bảo rằng hồ sơ cung cấp hồ sơ / ký mã cung cấp trong Mục tiêu của bạn được đặt chính xác thành hồ sơ cung cấp phân phối / nhận dạng ký hiệu phù hợp của bạn (điều này là rõ ràng)
  6. Tôi không chắc chắn 100% nếu điều này ảnh hưởng đến nó (không nên vì cài đặt Target ghi đè cài đặt dự án, nhưng tôi đã làm điều này), hãy đảm bảo hồ sơ cung cấp / nhận dạng ký hiệu dự án của bạn khớp với mục tiêu của bạn
  7. Trong tệp quyền lợi bạn đã thực hiện, nhấp chuột phải vào tệp trống và chọn "Hiển thị Khóa / Giá trị Nguyên"
  8. Thêm một mục mới vào tệp quyền lợi được gọi là "môi trường aps" và đặt giá trị của nó thành "sản xuất"
  9. Một lưu ý chính, nếu trước đây bạn đang sử dụng quyền truy cập nhóm truy cập móc khóa, bạn cũng sẽ muốn thêm khóa đó vào đây vì một số lý do, nó đã bị xóa đối với tôi khi thực hiện thủ công. Đảm bảo giá trị giống với giá trị được sử dụng trong các bản dựng trước (bạn có thể tìm giá trị bằng cách tìm bản dựng trước đó trong Trình tổ chức, cố gắng gửi đến cửa hàng ứng dụng, chọn nhóm của bạn, sau đó trước khi gửi ứng dụng, hãy nhấn vào mũi tên bên cạnh Chuỗi "(X) Quyền lợi" để mở rộng quyền lợi và xem giá trị của quyền truy cập nhóm truy cập khóa.
  10. Lưu trữ ứng dụng của bạn và cố gắng gửi nó đến điểm nhận được nút "Gửi" cuối cùng. Bạn sẽ thấy ứng dụng này hiện đã được xây dựng với hồ sơ cung cấp mới mà bạn đã tạo trong trung tâm thành viên. Hủy bỏ ra khỏi đây ngay bây giờ.
  11. Quay trở lại trung tâm thành viên Apple và xóa hồ sơ cung cấp mới mà bạn đã tạo ở bước 1.
  12. Quay lại Xcode, làm mới danh sách hồ sơ cung cấp của bạn một lần nữa bằng cách lặp lại bước 2.
  13. Bây giờ lưu trữ lại ứng dụng của bạn và bạn sẽ thấy ứng dụng được xây dựng với hồ sơ cung cấp Phân phối cũ mà bạn muốn sử dụng và có chính xác quyền lợi môi trường aps. Gửi và bạn đã hoàn tất.

Tôi biết điều này không chi tiết như nó nên có vì ảnh chụp màn hình, tôi sẽ cố gắng cập nhật nó bằng ảnh chụp màn hình khi tôi có thể nhưng hiện tại tôi đang ở trong tình trạng khủng hoảng thời gian và muốn có được ý chính những gì tôi đã làm ngoài đó Cũng có khả năng rất có thể là một số hoặc hầu hết các bước tôi đã vạch ra là không cần thiết, tôi đặt chúng ở đây vì tôi đã làm chúng và chúng có thể đã dẫn đến giải pháp cuối cùng.


Cảm ơn bạn. # 8 đối với tôi đã được thiết lập để phát triển, đó có thể là vấn đề của chúng tôi.
ăn vào

Cảm ơn bạn rất nhiều, đã lãng phí cả ngày cho sự tồi tệ này, bước # 4 là vấn đề, vì một số lý do mà không chỉ định CODE_SIGN_ENTITLEMENTS, các quyền lợi chỉ bị bỏ qua khi tải lên cửa hàng ứng dụng.
Mark Kazakov

5

kiểm tra Id ứng dụng của bạn có được kích hoạt tính năng đẩy hay không trên developer.apple.com trong Cổng thông tin cung cấp iOS Nếu không bật nó, hãy định cấu hình Chứng chỉ SSL đẩy cho Id ứng dụng của bạn Tải xuống và cài đặt lại trong Keychain của bạn Một lần nữa sau đó Tải xuống cài đặt hồ sơ phân biệt của bạn trong Liên lạc Xcode của bạn


4

Tôi cũng đã phải đối mặt với vấn đề này ngay cả khi tôi không sử dụng thông báo đẩy trong ứng dụng của mình. Hồ sơ cung cấp mới cũng không hoạt động với tôi. Những gì tôi đã làm là: -

1. Tạo chứng chỉ mới cho Ad hoc & App Store.

2.Sau đó tạo hồ sơ phân phối với chứng chỉ này và tích hợp hồ sơ với Xcode.

Sau đó, bản dựng mới được gửi với hồ sơ này được phê duyệt mà không có bất kỳ cảnh báo nào.


2
tôi đã thử điều này - không giúp được gì. vẫn nhận được thông báo đẩy bị thiếu .. tôi không sử dụng thông báo đẩy!
Adam

2

Trong trường hợp của tôi, ngay cả tôi đã tạo myapp.profile và đặt nó bằng xcode theo cách thủ công, và khi tôi chọn "hiển thị trong công cụ tìm" và đặt nhúng.mobileprovision và kiểm tra để đảm bảo môi trường aps có trong tệp, lỗi là vẫn còn đó.

Sau đó tôi đã đến trung tâm phát triển và thấy rằng trạng thái của XC: myapp.profile không hợp lệ. Tôi đã cập nhật nó và cài đặt XC: myapp.profile và nó hoạt động tốt.

Tôi nghĩ rằng xcode đang cố gắng quản lý hồ sơ và bạn cần kiểm tra hồ sơ cung cấp khi bạn gửi tệp nhị phân của mình để lưu trữ và đảm bảo đó là chính xác. Và theo các câu trả lời khác, nó có thể được gây ra vì nhiều lý do nên nó có thể thực sự gây phiền nhiễu.

CẬP NHẬT:

Khi bạn đã ký với hồ sơ đã tải xuống và xác nhận rằng aps-environmentđã có ở đó khi bạn cố gắng gửi App Store, bạn sẽ có thể thay đổi hồ sơ và thực thể ký mã thành tự động và iOS Developer. Hy vọng nó có thể được cải thiện trong Xcode 7.


Tôi đã kiểm tra tất cả các cấu hình và cả XC: hồ sơ được cập nhật và nó không bao gồm bất kỳ khóa môi trường asp nào. Tôi vẫn gặp vấn đề tương tự lặp đi lặp lại. Bất kỳ trợ giúp sẽ được đánh giá cao. Và vâng, tôi không cần bất kỳ thông báo đẩy nào được triển khai trong ứng dụng
iOSDev

Bạn có thể chắc chắn bằng cách kiểm tra nội dung nhị phân của hồ sơ cung cấp và xem chuỗi "aps-môi trường" có ở bên trong hay không? Nếu bên trong bạn cần tìm cách loại bỏ nó, nếu không, bạn cần chắc chắn rằng hồ sơ đó là hồ sơ bạn đang ký ứng dụng. Dù bằng cách nào cũng phải có một vấn đề.
superarts.org

1
Tôi đã kiểm tra nó hai lần và cố gắng tìm hiểu thêm nhưng không gặp may. Không có chuỗi nào như vậy nhưng sau 2 ngày tìm kiếm và thử, tôi đã nhận được một điều phù hợp rằng vấn đề này xảy ra với Xcode 7 beta không phải với mã của tôi :) Tương tự bản dựng qua Xcode 6.4 hoạt động hoàn hảo và không có email nào từ Apple báo cáo rằng vấn đề là do vấn đề với Xcode 7 beta 4 chứ không phải với mã hoặc hồ sơ.
iOSDev

2

Đâ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


2

Để giải quyết vấn đề này cho một ứng dụng 'đẩy ra', tôi đã đi đến tab khả năng, kích hoạt tính năng đẩy, sau đó vô hiệu hóa lại. Việc này đã xóa cài đặt 'quyền lợi' của APNS khỏi tệp .entitlements.


đã thử điều này trong dự án "bị đẩy ra" của tôi, nhưng tôi vẫn nhận được những thông báo này
webdevbyjoss

1

Tôi gặp vấn đề tương tự và giải pháp của tôi là thêm quyền truy cập thông báo đẩy từ Target -> Capabilities.


0

Điều này xảy ra với tôi đột ngột vì hồ sơ phân phối ứng dụng của tôi đã hết hạn. Xcode bắt đầu sử dụng cấu hình ký tự đại diện thay vào đó, không kích hoạt quyền thông báo đẩy. Tôi đã không nhận được bất kỳ cảnh báo. Việc sửa chữa rất dễ dàng; Tôi vừa phải tạo một hồ sơ phân phối khác cho ứng dụng của mình trong Trung tâm thành viên nhà phát triển của Apple, tải xuống và nhấp đúp để cài đặt trong Xcode.


0

Có một số gợi ý thực sự tốt ở đây.

Đề cập đến ảnh chụp màn hình cuối cùng mà Mina cung cấp, sau khi ban đầu lưu trữ ứng dụng của tôi, hồ sơ cung cấp được đề cập trong khi tải lên có chứa một ký tự đại diện (XC. *). Cái này sai.

Phải mất một số nỗ lực đáng kể để giải quyết điều này. Tôi đã phải thực hiện kết hợp các gợi ý mà Simon Woodside & Mina Fawzy cung cấp.

Nếu bạn có bất kỳ chứng chỉ hiện có và hồ sơ cung cấp nào liên quan đến dự án của bạn, bây giờ sẽ là thời điểm tốt để xóa tất cả chúng cục bộ và thu hồi tất cả chúng từ xa. Hãy cho mình một khởi đầu mới.

Gợi ý chi tiết của Mina Fawzy là tuyệt vời. Thực hiện đề xuất của Mina, nếu được thực hiện chính xác, sẽ chăm sóc bạn trực tuyến.

Nhập đề nghị của Simon. Hai điều tôi cần kiểm tra bên trong dự án của tôi. Sử dụng XCode, vào đây:

DỰ ÁN -> CÀI ĐẶT XÂY DỰNG -> ĐĂNG KÝ MÃ

Xem lại danh tính ký mãhồ sơ cung cấp . Hãy chắc chắn rằng bạn đặt hai thuộc tính đó thành tên của dự án. Không cho phép XCode tự động chọn cho bạn và không sử dụng một số nhận dạng ký mã chung (ví dụ: Nhà phát triển Iphone).

Đảm bảo rằng bạn thực sự có thể cài đặt ứng dụng lên thiết bị của mình trước khi quyết định lưu trữ.


0

Vấn đề lớn nhất mà tôi gặp phải sau khi kích hoạt Push Notificationtừ Capabilitiesvà làm lại tất cả các chứng chỉ là tên Targettên thư mục nơi lưu trữ dự án được tạo từ 2 chuỗi cách nhau bởi khoảng trắng. Sau khi loại bỏ không gian tất cả chỉ hoạt động tốt!


1
Ứng dụng của tôi không sử dụng thông báo đẩy nhưng tôi vẫn nhận được cảnh báo này từ apple. Xin đề nghị
Chandni

0

Tôi gặp vấn đề này vì tập tin quyền lợi của tôi không đúng do chỉnh sửa thủ công trước đó. Tôi đã xóa cú pháp nhập quyền được định dạng sai và sau đó tôi có thể nhấp vào "sửa" trong tab khả năng và Xcode đã thêm quyền vào tệp của tôi.

Dưới đây là một ví dụ về tệp quyền lợi được định dạng đúng (" Runner.entitlements"):

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>aps-environment</key>
    <string>development</string>
    <key>com.apple.developer.applesignin</key>
    <array>
        <string>Default</string>
    </array>
</dict>
</plist>

0

CỐ ĐỊNH Ý tưởng Các bạn vì vậy tôi đã tạo một ứng dụng và không sử dụng bất kỳ chức năng thông báo đẩy nào nhưng tôi vẫn nhận được email. Sau khi kiểm tra các chứng chỉ, id và hồ sơ của số nhận dạng gói tôi đã sử dụng để tạo ứng dụng của mình trong cửa hàng apple kết nối trong cổng thông tin của nhà phát triển apple, tôi nhận ra rằng các thông báo đẩy đã được bật.

Những gì bạn phải làm là:

đi đến trang đăng nhập của nhà phát triển apple, nơi bạn có thể quản lý chứng chỉ của mình như 2. chọn tab "Chứng chỉ, ID và hồ sơ" ở bên phải 3. bây giờ chọn "Định danh" 4. và id gói từ danh sách bên phải 5. ngay bây giờ cuộn xuống cho đến khi bạn thấy thông báo đẩy 6. tắt nó đi 7. lưu trữ bản dựng của bạn và tải lại lên Apple Store Connect

Hy vọng nó giúp!

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.