2012-01-05 55 views
11

Tôi có một ứng dụng được cho là đã bật thông báo đẩy nhưng vì một số lý do không có chúng. Tôi đã thấy những người khác tải xuống và cài đặt ứng dụng và thậm chí nó không nhắc họ cho phép gửi thông báo đẩy. Như mong đợi, ứng dụng này không xuất hiện trong Cài đặt> Thông báo của họ.Làm cách nào để kiểm tra xem hồ sơ cấp phép phân phối iOS có bật thông báo đẩy không?

Tuy nhiên, trên iPad của tôi, tôi có thể nhận được thông báo đẩy từ ứng dụng này và nó hiển thị trên Cài đặt> Thông báo của tôi. Tôi đã xóa và cài đặt lại ứng dụng để đảm bảo rằng tôi có cùng một thứ mà mọi người khác có (và không phải là phiên bản phát triển) và tôi vẫn có thể nhận được thông báo.

Bây giờ, ứng dụng này được viết cho khách hàng đã gửi cho tôi tất cả hồ sơ cung cấp (dev, adhoc, distribution) cũng như các tệp cần thiết để có thể gửi thông báo đẩy, vì vậy tôi không thể biết chắc mọi thứ đã được tạo đúng cách.

Lý thuyết của tôi ngay bây giờ là:

  • hồ sơ cá nhân Adhoc tôi nhận được "tạo đúng" (tức là tạo ra sau khi thiết lập APN trên App ID của ứng dụng trong các Provisioning Portal)
  • sự hồ sơ phân phối mà tôi đã nhận được trước khi thiết lập APNs cho ứng dụng này (và do đó, nó không phải là "đẩy bật")
  • lý do tôi có thể nhận thông báo đẩy trên thiết bị của tôi là vì trong khi phát triển Tôi đã cài đặt phiên bản adhoc, đã nhắc tôi cấp quyền nhận thông báo đẩy và mặc dù tôi đã xóa phiên bản adhoc này và tải xuống phiên bản từ cửa hàng, thiết bị đã "lưu vào bộ nhớ cache" thực tế là tôi sẵn sàng để nhận thông báo và không còn nhắc tôi về số đó. Tôi đã kiểm tra với các ứng dụng khác và thực sự, sau khi tôi xóa và cài đặt lại chúng, chúng sẽ không nhắc tôi một lần nữa để có quyền nhận thông báo đẩy.

Vì vậy, câu hỏi của tôi là:

  • Liệu lý thuyết này có ý nghĩa?
  • Nếu có, điều này có nghĩa là tôi sẽ phải yêu cầu khách hàng tạo hồ sơ cấp phép phân phối mới. Tôi làm cách nào để xác minh rằng tiểu sử này được "kích hoạt"? (tức là tôi không thể chỉ cài đặt một ứng dụng được biên dịch với nó)

Trả lời

22

Ok, tôi có thể đã tìm thấy cách xác minh xem các cấu hình có bật hay không.

Nếu tôi mở file .mobileprovision như một tập tin văn bản, có một chút XML có (một plist rõ ràng) mà tôi đoán cho một hồ sơ phân phối nên có điều này:

<key>aps-environment</key> 
<string>production</string> 

Và quả thực , hồ sơ adhoc đã có hồ sơ này và hồ sơ phân phối không, vì vậy ... Tôi đoán đây là vấn đề.

Tuy nhiên, bất kỳ thông tin phản hồi sẽ rất hữu ích :)

+2

Và cách dễ dàng để xem phần XML trong hồ sơ cung cấp sẽ là chạy lệnh sau trong Terminal.app 'security cms -Di/path/to/AppStoreProfile.mobileprovision' Sau đó, tìm cùng một môi trường aps Chìa khóa. – Tal

7

Hơi khác nhau, nhưng vẫn hữu ích: khi bạn tải một ứng dụng để iTunes kết nối, bạn có thể kiểm tra xem nó có Push Notification (hoặc bất kỳ quyền lợi khác) được kích hoạt.

Để thực hiện việc này, hãy đi tới Quản lý ứng dụng của bạn, chọn ứng dụng, sau đó chuyển đến "Xem chi tiết" cho phiên bản bạn muốn kiểm tra.

Từ đó, chuyển đến trang "Chi tiết nhị phân" - có trường Quyền lợi hiển thị những quyền mà nhị phân có. Nếu Thông báo đẩy được bật, bạn sẽ thấy dòng "aps-environment: production" ở đó.

0

Đảm bảo rằng cấu hình cung cấp phân phối được tạo sau khi tạo aps_certificate. thay đổi cao hồ sơ cá nhân có thể bỏ lỡ aps-môi trường

0

tôi đã thêm dòng sau vào AppDelegate.m vì vậy tôi có thể nhìn thấy chính xác những gì các thiết lập đã được kích hoạt trong debug

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 
{ 
    UIRemoteNotificationType enabledTypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; 
NSLog(@"Receiving Notification Types: %lu", (long)enabledTypes); //0=none 1=badge 2=sound 4=alert 8=NewsStandContantAvailability 

Tôi nhận này từ một Rất đầy đủ và liên kết hữu ích: Apple Push Notification Service Tutorial - Part 1 nó cực kỳ hữu ích cho tôi.

Các vấn đề liên quan