ios8 आईक आईओएस 8 में सही तरीके से सेट किए गए एप्लिकेशन बैज मान को कैसे सेट करें?




आईक्लाउड (4)

8.3 के अपडेट, ObjC: हमें एनएसएलॉग को बदलने के लिए दाज-डंजन स्क्रिप्ट को शामिल करना चाहिए (@ "यूआई यूजर नोटिफिकेशन टाइपपैड के लिए प्रवेश निषेध"); ऊपर स्पाडी और केपीएमपी समाधान में आशा है कि यह मदद तो

पुरानी विधि

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:count];

अब त्रुटि देता Attempting to badge the application icon but haven't received permission from the user to badge the application

फिर मैंने नए एपीआई का उपयोग करने की कोशिश की (जो मुझे लगता है कि बैज मान से संबंधित है)

CKModifyBadgeOperation * operation = [[CKModifyBadgeOperation alloc] initWithBadgeValue:50];
[operation setModifyBadgeCompletionBlock:^(NSError *error) {
      NSLog(@"%@", error);
}];
[operation start];

लेकिन मुझे त्रुटि <CKError 0x165048a0: "Not Authenticated" (9/1002); "This request requires an authenticated account"> प्राप्त हो रहा है <CKError 0x165048a0: "Not Authenticated" (9/1002); "This request requires an authenticated account"> <CKError 0x165048a0: "Not Authenticated" (9/1002); "This request requires an authenticated account">

बैज कैसे सेट करें या कुछ नई अनुमतियां प्राप्त करें?


ios8 के तहत बैज को संशोधित करने के लिए आपको अनुमति के लिए पूछना होगा

    let settings = UIUserNotificationSettings(forTypes: UIUserNotificationType.Badge, categories: nil)
    UIApplication.sharedApplication().registerUserNotificationSettings(settings)

या objc में

UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];

मैं इसे संभालने के लिए एक क्लास लिखता हूं जब मैं स्विफ्ट का इस्तेमाल करता हूं:

class ZYUtility
{
    /// Set badge
    class func setApplicationBadgeNumber(badge: Int) {
        if ZYUtility.SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO("8.0") {
            if UIApplication.sharedApplication().currentUserNotificationSettings().types & UIUserNotificationType.Badge != nil {
                UIApplication.sharedApplication().applicationIconBadgeNumber = badge
            } else {
                println("No permission to set badge number")
            }
        } else {
            UIApplication.sharedApplication().applicationIconBadgeNumber = badge
        }
    }

    /// System check
    class func SYSTEM_VERSION_EQUAL_TO(version: String) -> Bool {
        return UIDevice.currentDevice().systemVersion.compare(version,
            options: NSStringCompareOptions.NumericSearch) == NSComparisonResult.OrderedSame
    }

    class func SYSTEM_VERSION_GREATER_THAN(version: String) -> Bool {
        return UIDevice.currentDevice().systemVersion.compare(version,
            options: NSStringCompareOptions.NumericSearch) == NSComparisonResult.OrderedDescending
    }

    class func SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(version: String) -> Bool {
        return UIDevice.currentDevice().systemVersion.compare(version,
            options: NSStringCompareOptions.NumericSearch) != NSComparisonResult.OrderedAscending
    }

    class func SYSTEM_VERSION_LESS_THAN(version: String) -> Bool {
        return UIDevice.currentDevice().systemVersion.compare(version,
            options: NSStringCompareOptions.NumericSearch) == NSComparisonResult.OrderedAscending
    }

    class func SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(version: String) -> Bool {
        return UIDevice.currentDevice().systemVersion.compare(version,
            options: NSStringCompareOptions.NumericSearch) != NSComparisonResult.OrderedDescending
    }
}

दाज-दंज के उत्तर के अलावा: यह संभव है कि आप उन्हें एक बार में अनुरोध कर सकें। इस प्रकार है:

UIUserNotificationSettings* notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];

डीबग आउटपुट में उल्लेख है कि मुझे एप्लिकेशन बैज की अनुमति के लिए पूछना चाहिए





ios8