2011-10-15 17 views
6

Ứng dụng của tôi cần được đặt trong Trung tâm thông báo iOS 5 là 'cảnh báo' và có 'âm thanh'. Từ những gì tôi đã tìm thấy nó là không thể cho ứng dụng của bạn để cung cấp các thiết lập một cách chính xác, đó sẽ là lựa chọn tốt nhất để sửa tôi nếu im sai.phát hiện cài đặt trung tâm thông báo

Vì vậy, tôi đang tìm kiếm một quy trình để phát hiện cài đặt hiện tại và cảnh báo người dùng nếu những điều này không chính xác.

Trả lời

0

Điều này không thể thực hiện theo chương trình. Và "registerForRemoteNotificationTypes" là dành cho các thông báo từ xa (push), chứ không phải thông báo cục bộ.

Điều duy nhất tôi có thể làm là bao gồm trong mô tả ứng dụng của mình trên cửa hàng ứng dụng giải thích về cách thiết lập Trung tâm thông báo. Tôi cũng đưa nó vào video trình diễn của mình.

Bạn cũng có thể nghĩ đến việc đặt lời nhắc vào lần đầu tiên ứng dụng được khởi chạy giải thích cài đặt thông báo "chính xác" cho ứng dụng của bạn. Không hiển thị nó trên các bản phát hành tiếp theo, nhưng có sẵn trong phần "trợ giúp".

Chắc chắn, "những gì là chính xác" là những gì người dùng muốn, nhưng đối với ứng dụng của tôi, người dùng KHÔNG BAO GIỜ muốn cài đặt mặc định, đó là "biểu ngữ". Trải nghiệm người dùng tốt nhất cho ứng dụng của tôi chỉ là "âm thanh". Đơn khiếu nại lớn nhất về ứng dụng của tôi trước Trung tâm thông báo là các cửa sổ bật lên từ các thông báo địa phương. Giờ đây, với Trung tâm thông báo, người dùng có thể tắt mọi thứ ngoại trừ "âm thanh". Đó là bối cảnh mà tất cả họ đều muốn. Tại sao tôi không thể làm nhà phát triển chỉ cần cung cấp cho họ làm mặc định? Nếu họ muốn thay đổi nó thành cái gì khác, điều đó thật tuyệt, nhưng tôi nên kiểm soát các thiết lập mặc định. Nhưng tôi đang ranting.

+0

Tôi chưa bao giờ tìm cách làm điều này nếu có cách nào. (đôi khi bạn sẽ tìm thấy xung quanh công việc không được ghi lại) Và đồng ý rằng cần phải có một phương tiện để làm điều này, nó có thể yêu cầu một popup bắt buộc cho người dùng. "Ứng dụng muốn sửa đổi cài đặt thông báo của nó, Đồng ý?". Mặc dù tôi nghĩ rằng ranting là ra khỏi phạm vi của stackoverflow .... –

0

Tôi không nghĩ rằng điều này có thể được thực hiện theo chương trình.

Bạn có thể quy định mặc dù cảnh báo nào ứng dụng của bạn có thể chấp nhận khi được khởi chạy.

Tôi sẽ sử dụng này trong các đại biểu ứng dụng, phương pháp didFinishLaunchingWithOptions

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

nghĩ về nó theo cách này: điều gì sẽ bạn, như một người dùng, nghĩ rằng nếu mọi ứng dụng khác thiết lập các trên? (Chắc chắn, bạn muốn nó cho ứng dụng của bạn. Nhưng không phải tất cả các ứng dụng đều tốt như ứng dụng của bạn.) Hoặc, nếu mọi ứng dụng khác cảnh báo bạn mỗi khi ứng dụng được khởi chạy?

Không thể, và đó là lý do.

Giống như Nik đã nói, chỉ cần đưa mọi thứ bạn hy vọng người dùng sẽ bật. Sau đó hệ thống sẽ cung cấp cho người dùng một cơ hội để cho phép điều này.

+0

cảm ơn David, như đã đề cập, tôi cho đến nay đã tìm thấy nó không thể. Những gì tôi quan tâm là một phương tiện để phát hiện trong ứng dụng của tôi những gì các thiết lập trong trung tâm thông báo là vì vậy tôi có thể hiển thị một cảnh báo cho người dùng nếu không chính xác. Vì vậy, người dùng sau đó có thể đi vào trung tâm notif và thay đổi chính xác. Cảnh báo sau đó sẽ biến mất nếu được đặt chính xác. –

+1

"những gì là chính xác" cho thông báo là những gì người dùng muốn, không phải những gì bạn muốn họ có. Nếu bạn cố buộc người dùng phải có một loại thông báo cụ thể cho ứng dụng của mình, tôi chắc chắn bạn sẽ bị Apple từ chối ngay lập tức. – BigSprocket

1

thực sự nó có thể được thực hiện với phương pháp sau -

loại UIRemoteNotificationType = [UIApplicationsharedApplication].enabledRemoteNotificationTypes;

trong khi loại là

typedef enum 
{  
    UIRemoteNotificationTypeNone = 0, 
    UIRemoteNotificationTypeBadge = 1 << 0, 
    UIRemoteNotificationTypeSound = 1 << 1, 
    UIRemoteNotificationTypeAlert = 1 << 2, 
    UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3 
} 

theo: http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIApplication_Class/Reference/Reference.html Vì vậy, nếu bạn muốn biết nếu người dùng đã được phê duyệt ứng dụng của bạn để thông báo, tất cả các bạn cần làm là để kiểm tra xem types >= 4 được nhận thức: điều này sẽ không cho bạn biết nếu người dùng đã bật hoặc tắt trung tâm thông báo cho ứng dụng của bạn, nó sẽ chỉ cho bạn biết LOẠI thông báo rằng người dùng đã phê duyệt

+0

Tôi không thể có được điều này để làm việc. Bạn đã thử nghiệm với phần cứng hiện tại và iOS mới nhất chưa? –

+0

Có, và hoạt động của nó .. số bạn nhận được cho các loại? –

+0

Dường như '- (void) registerForRemoteNotificationTypes: (UIRemoteNotificationType) types' phải được gọi để' enableRemoteNotificationTypes' trả lời bất cứ điều gì trừ '0'. Điều này chỉ dành cho push và không thể sử dụng cho các thông báo cục bộ. – Jonny