Xcode 8 "quyền của môi trường aps bị thiếu trong chữ ký của ứng dụng" khi gửi


118

Tôi có một ứng dụng mà chúng tôi đã gửi đi các phiên bản trong vòng 6 tháng qua và chúng tôi sử dụng APNS. Tôi nhận được email sau từ Apple sau khi nâng cấp lên Xcode 8

Kính gửi nhà phát triển,

Chúng tôi đã phát hiện ra một hoặc nhiều vấn đề với lần gửi gần đây của bạn cho APP_NAME. Giao hàng của bạn đã thành công, nhưng bạn có thể muốn sửa các vấn đề sau trong lần giao hàng tiếp theo:

Thiếu quyền truy cập thông báo đẩy - Ứng dụng của bạn bao gồm một API cho dịch vụ Thông báo đẩy của Apple, nhưng chữ ký của ứng dụng lại thiếu quyền trong môi trường aps. Để giải quyết vấn đề này, hãy đảm bảo rằng ID ứng dụng của bạn được bật cho thông báo đẩy trong Cổng cấp phép. Sau đó, ký ứng dụng của bạn bằng hồ sơ cấp phép phân phối bao gồm quyền được hưởng môi trường aps. Điều này sẽ tạo ra chữ ký chính xác và bạn có thể gửi lại ứng dụng của mình. Xem "Cung cấp và phát triển" trong Hướng dẫn lập trình thông báo cục bộ và đẩy để biết thêm thông tin. Nếu ứng dụng của bạn không sử dụng dịch vụ Thông báo đẩy của Apple, bạn không cần thực hiện hành động nào. Bạn có thể xóa API khỏi các lần gửi trong tương lai để ngăn cảnh báo này. Nếu bạn sử dụng khuôn khổ của bên thứ ba,

Sau khi đã khắc phục sự cố, bạn có thể sử dụng Xcode hoặc Trình tải ứng dụng để tải tệp nhị phân mới lên iTunes Connect.

Trân trọng,

Nhóm App Store

Điều kỳ lạ là tôi đã truy cập developer.apple.com -> Chứng chỉ, Số nhận dạng & Hồ sơ và AppId của tôi vẫn được bật Thông báo đẩy. Tôi không làm bất cứ điều gì khác biệt sau đó tôi đã từng làm về nó vì vậy tôi tò mò liệu bản cập nhật Xcode 8 đã phá vỡ điều gì đó. Có ý kiến ​​gì không?

BTW: Liên kết họ đặt cho Hướng dẫn lập trình thông báo đẩy đã bị hỏng trong email, vì vậy đó không phải là một dấu hiệu tốt.

Câu trả lời:


156

Thực sự rất dễ dàng. Vì lý do nào đó, nó đã bị vô hiệu hóa trên Xcode 8 nhưng hãy chuyển đến Mục tiêu -> Khả năng và xác minh Thông báo đẩy đều chính xác trên chế độ xem đó. Đối với tôi, nó có một "Fix Me", tôi phải nhấp vào, và thì đấy.


4
Điều kỳ lạ về vấn đề này không phải là giải pháp, thực tế là trên Xcode 7, tính năng này đã được kích hoạt và sau khi nâng cấp, nó đã bị vô hiệu hóa.
Unome

2
Tôi cũng phải vào tệp quyền và thay đổi giá trị Môi trường APS thành 'sản xuất' vì nó được đặt thành 'phát triển' theo mặc định khi được tạo.
Bek

61
Gần đây phải có một số người không có đầu óc được thuê ở Apple .. Tại sao họ lại mất thời gian của các nhà phát triển bằng cách tắt mọi thứ theo mặc định và mặc định đặt các giá trị không phù hợp mà không có bất kỳ cảnh báo nào về điều đó. Tôi đã mất một ngày nào đó trong việc tạo ra hồ sơ, chứng chỉ, gỡ lỗi và những thứ khác gây phiền nhiễu ..
Hristo Atanasov

3
Cuối cùng! Thật nực cười, thật khó để làm cho nó hoạt động. Tôi đã xóa và tạo lại chứng chỉ / hồ sơ trong gần 5 giờ. Điều tốt là tôi có thể nói rằng tôi hoàn toàn hiểu những chứng chỉ / hồ sơ / số nhận dạng này là gì bây giờ :) Cảm ơn bạn đã gợi ý này.
Kamil Rykowski

4
@bek lưu ý rằng bạn có thể nên để nó dưới dạng phát triển. Nó được tự động thay đổi thành sản xuất khi tải lên iTunes Connect.
Montdidier

84

Tôi cũng gặp sự cố tương tự và tôi chắc chắn rằng Thông báo đẩy bị tắt theo mặc định trong Xcode8. Tôi không nhận thấy điều đó. Hãy cẩn thận về nó.

khả năng


Bạn có thể cho tôi biết lý do tại sao tôi không có phần thông báo đẩy trong tài khoản của mình không?
Anuj

28

Đã có một sự thay đổi trong Xcode 8, nơi các quyền của bạn không còn đến từ Số nhận dạng ứng dụng nữa mà từ các khả năng được chọn trong mục tiêu ứng dụng của bạn. Vì vậy, như Unome (OP) đã nói, bạn phải xác minh rằng Thông báo đẩy đã được bật.

Đối với tôi, đó không phải là nút "Fix Me", nhưng tôi có hai tệp quyền (một để phát triển và một để phân phối). Chuyển đổi khả năng Thông báo đẩy sẽ thêm aps-environmentkhóa - với giá trịdevelopment - vào tệp quyền phát triển, nhưng nó sẽ không thêm nó vào tệp quyền phân phối. Sao chép cùng một khóa vào bản phân phối đã có tác dụng loại bỏ email cảnh báo khi tải lên iTunes Connect.

Đối với hầu hết các dự án, chỉ cần bật Thông báo đẩy là đủ hoặc nếu nó đã được bật nhưng khóa không có trong quyền, hãy thử tắt và bật lại.


Đây là con thuyền mà tôi đang ở, ngoại trừ việc bất kể tôi chỉ định gì trong .entitlementstệp của mình cho cấu hình / lược đồ hiện tại, nó luôn sử dụng productionlàm aps-environment.
Albert Bori

bật tắt Thông báo đẩy trong Khả năng làm hỏng Xcode 8 của tôi !!
Đáy

2
@AlbertBori Weird, tôi chỉ có thể làm cho nó hiển thị sự phát triển, điều này tốt thôi vì khi nó được lưu trữ, nó sẽ xuất hiện dưới dạng production.
timgcarlson

6
@meteors Sẽ không sao nếu giá trị là development. Nó sẽ được thay đổi trong ipa khi dự án được lưu trữ.
timgcarlson

2
@timgcarlson Điều này thực sự không xảy ra trong quá trình lưu trữ. Nó xảy ra trong khi gửi hoặc khi xuất. Ngoài ra, một số thông tin hữu ích để kiểm tra xem nó có được đặt đúng ở đây không: developer.apple.com/library/content/qa/qa1798/_index.html
Mark Leonard

27

Từ ghi chú phát hành Xcode :

Xcode 8 không tự động sao chép quyền của môi trường aps từ các cấu hình cấp phép tại thời điểm xây dựng. Hành vi này là cố ý. Để sử dụng quyền này, hãy bật Thông báo đẩy trong ngăn Khả năng của trình soạn thảo dự án hoặc thêm quyền theo cách thủ công vào tệp quyền của bạn. (28076333)

Đây là một sự thay đổi lớn vì nó luôn khá kỳ lạ khi quyền hưởng môi trường aps không yêu cầu plist, nhưng nhiều người khác đã làm.

Đối với những người bạn không muốn chỉ cần nhấn "Fix Me" một cách mù quáng và hiện không có tệp quyền, đó chỉ là tệp plist được tham chiếu trong Cài đặt bản dựng của dự án của bạn trong "Quyền lợi ký mã"


1
Tôi không thể tìm thấy trích dẫn đó trong các ghi chú được liên kết!
Iulian Onofrei

Tôi không biết ai đã ủng hộ nhận xét của tôi và điều gì đã sai, nhưng tôi cũng có thể tìm thấy nó ngay bây giờ.
Iulian Onofrei

13

Sau một ngày vật lộn với Xcode 8, chúng tôi không thể tìm ra lý do tại sao sự aps-environmentphát triển KHÔNG được thêm vào các bản dựng gỡ lỗi của chúng tôi. Nó bị thiếu trong phần quyền trong ứng dụng được xây dựng để kiểm tra gỡ lỗi ... mặc dù chúng tôi đã BẬT tính năng mới và tệp các quyền đã tồn tại. Vấn đề là tệp quyền cần được đặt cho BẤT KỲ SDK nào trong Cài đặt bản dựng Xcode cho Quyền lợi gỡ lỗi.

ảnh chụp màn hình


Tôi không nghĩ rằng có bất kỳ sự khác biệt nào giữa việc đặt giá trị cho Debugkhóa và đặt nó cho Debug> Any SDKmột, vì cái sau được sử dụng để ghi đè giá trị cho một SDK cụ thể.
Iulian Onofrei

Đây là giải pháp cho tôi
Himanth

Sau khi vật lộn với điều này cả buổi sáng, đây cũng là vấn đề mà tôi đang gặp phải. Chuyển đổi Khả năng, tạo hồ sơ cấp phép, không có cách nào trong số đó hoạt động. Điều này đã làm.
Dave S

đây vẫn là một giải pháp hợp lệ trong một số trường hợp trên Xcode 8.3.3
dan

Tôi ước tôi có thể bỏ phiếu này một triệu lần. Tôi đã vật lộn trong một tuần, và đây là giải pháp. Chỉ cần nhập đường dẫn tệp vào Phần triển khai ký mã ở trên cùng là không đủ, bạn cũng phải thực hiện trong phần "Bất kỳ SDK nào". Đây là chìa khóa để giải quyết nó cho tôi.
Robert Bentley

7

Tôi nhận được email tương tự từ Apple bằng XCode 7.3.1. Những gì tôi đã làm để giải quyết vấn đề là:

  1. Trong Khả năng> Đặt thông báo PUSH BẬT như đã nêu trong câu trả lời @Bruce Tsai.
  2. Trong Xây dựng-Cài đặt> Ký mã> Nhận dạng ký mã đặt chứng chỉ nhà phát triển để gỡ lỗi và chứng chỉ phân phối để phát hành, như được hiển thị trong hình ảnh:

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


Xin chào, Trong khả năng, tôi không nhận được Khả năng> Đặt thông báo PUSH
Anuj

@Anuj, tôi đã thêm một ảnh chụp màn hình mà nó sẽ có trong Xcode của bạn.
Ruben

5

Nếu bạn đang sử dụng các khuôn khổ Firebase và không sử dụng thông báo đẩy, có hai giải pháp 1. chỉ cần đưa ra thông báo 'sự cố' được gửi đến toàn bộ nhóm của bạn mỗi khi tải tệp nhị phân lên. Ứng dụng sẽ vẫn được chấp nhận gửi miễn là bạn không thực sự sử dụng thông báo, bạn có thể bỏ qua cảnh báo. hoặc 2. làm điều này: https://stackoverflow.com/a/46802075/7529450 . Điều này sẽ loại bỏ thông báo email gây phiền nhiễu và cũng được chấp nhận như một bài gửi.


4

Tự động quản lý ký đã tắt đối với tôi

Tự động quản lý ký đã tắt đối với tôi, tôi đã kiểm tra và hoạt động tốt đối với tôi.


3

Sử dụng Thông báo đẩy Xcode 9 đã được bật.

Tôi đã thử tắt / bật lại khả năng Thông báo đẩy . (không hoạt động)

Tôi đã thử tắt / bật lại Tự động quản lý ký . (không hoạt động)

Hóa ra tôi phải xóa và thêm lại hồ sơ cấp phép của mình. ( xem tại đây cách thực hiện ) Bạn có thể phải tắt / bật lại Tự động quản lý việc ký sau các phường.


2

Đối với tôi, vấn đề là do có hai tệp quyền: Entitlements-Debug.plistEntitlements-Release.plist. Và chỉ một trong số chúng (Gỡ lỗi) cần cài đặt trong đó.

Thay đổi nhiều giá trị của Cài đặt bản dựng> Ký hiệu> Quyền ký mã thành một giá trị duy nhất MyAppName/MyAppName.entitlementsvà sau đó kích hoạt lại Khả năng> Thông báo đẩy chuyển đổi đã thực hiện thủ thuật cho tôi.

Hy vọng nó giúp.


0

Một tùy chọn khác đã hoạt động: sao chép-dán nguồn của AppName/Entitlements-Debug.plistvào AppName/Entitlements-Release.plist.

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.