2011-12-24 51 views
10

Tôi đang cố triển khai Thông báo đẩy cho ứng dụng iOS 5 của mình bằng hướng dẫn từ Ray Wenderlich: http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12.iOS: cách đăng ký thông báo đẩy?

Tôi đã chèn đoạn mã sau vào phương pháp của tôi didFinishLaunchingWithOptions trong appdelegate tôi:

[[UIApplication sharedApplication] registerForRemoteNotificationTypes: 
    (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)]; 

Khi chạy ứng dụng trên điện thoại của mình (không Simulator) popup/cảnh báo nói cho tôi để chấp nhận các thông báo đẩy không được hiển thị . Tôi đã chèn một điểm gỡ lỗi trên dòng, và tôi có thể thấy, rằng registerForRemoteNotificationTypes được gọi.

Tại sao không có gì xảy ra?

Trả lời

7

Có thể, xóa ứng dụng của bạn và thử lại. Hộp thoại đó chỉ xuất hiện một lần. Nhưng tôi không chắc chắn liệu hộp thoại đó có xuất hiện trở lại khi bạn cài đặt lại ứng dụng đó hay không.

Bạn cũng có thể truy cập ứng dụng cài đặt trung tâm thông báo, xem ứng dụng của bạn có nằm trong danh sách hay không.

Bạn cũng có thể thêm điểm ngắt và xem liệu didRegisterForRemoteNotificationsWithDeviceToken có thực hiện hay không.

+0

Tôi đã cố gắng xóa Ứng dụng khỏi thiết bị mà không thành công. Ứng dụng không có trong Trung tâm thông báo. Hơn nữa, 'didRegisterForRemoteNotificationsWithDeviceToken' hoặc' didFailToRegisterForRemoteNotificationsWithError' không bao giờ được gọi. – dhrm

+0

Bạn đã đặt đúng Mã định danh nhóm không? Bạn có đang sử dụng ID ứng dụng ký tự đại diện không? – YuAo

+3

Cảm ơn bạn đã trả lời. Vấn đề là tôi phải tạo lại Hồ sơ cấp phép của mình sau khi tôi bật Thông báo đẩy cho chứng chỉ. – dhrm

3

Tôi đã gặp sự cố chính xác này (với cùng một hướng dẫn không kém) và thấy rằng tôi đã ký mã với cấu hình cung cấp sai.

Cụ thể, tôi chỉ bật thông báo đẩy "Sản xuất" cho ứng dụng của mình (vì tôi không muốn thực hiện chứng chỉ hai lần, v.v) nhưng Cài đặt bản dựng trong Xcode đã sử dụng "Phát triển iPhone" làm mặc định "Mã ký nhận dạng" "Phát hành", thay vì "Phân phối iPhone" như nó phải có được. Đây có vẻ là cài đặt mặc định trong ứng dụng thử nghiệm của tôi.

Hy vọng rằng tôi có thể ngăn người khác lãng phí thời gian vào cùng một vấn đề.

+0

Cùng một hướng dẫn, cùng một vấn đề. Tôi đang chạy xây dựng Debug tethered vào thiết bị, và có dev ký nhận dạng ... Khi bạn nói "Tôi chỉ kích hoạt" sản xuất "đẩy thông báo cho ứng dụng của tôi", bạn có thể xin vui lòng xây dựng trên những gì có nghĩa là? –

1

Từ iOS 8 có phương pháp mới cho việc này. Trực tiếp từ UIApplication.h:

- (void)registerForRemoteNotifications NS_AVAILABLE_IOS(8_0); 

Calling này sẽ dẫn đến một trong hai application:didRegisterForRemoteNotificationsWithDeviceToken: hoặc application:didFailToRegisterForRemoteNotificationsWithError: được kêu gọi các đại biểu ứng dụng.

Lưu ý: các cuộc gọi lại này sẽ chỉ được thực hiện nếu ứng dụng đã đăng ký thành công thông báo người dùng với registerUserNotificationSettings: hoặc nếu ứng dụng được bật để làm mới ứng dụng nền.

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