ios8 - आईक्लाउड




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

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];

पुरानी विधि

[[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">

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


पिछली पोस्ट के लिए अतिरिक्त जानकारी ( registerUserNotificationSettings यूजर नोटिफिकेशन सेटिंग में पूरा करने के लिए):

सूचनाएं दर्ज करने और बैज के साथ काम करने के लिए ऐप्पल नए एपीआई बनाता है।

WWDC 2014 सत्र वीडियो , पाठ संस्करण और दस्तावेज़ीकरण देखें

उपयोगकर्ता सेटिंग में प्रत्येक UIUserNotificationType ( UIUserNotificationTypeBadge , UIUserNotificationTypeSound , UIUserNotificationTypeAlert ) के लिए अनुमतियों को बदल सकता है।

बैज बदलने से पहले आपको अनुमतियों की जांच करनी चाहिए।

मेरे AppDelegate से कोड नमूना:

#ifdef __IPHONE_8_0

- (BOOL)checkNotificationType:(UIUserNotificationType)type
{
    UIUserNotificationSettings *currentSettings = [[UIApplication sharedApplication] currentUserNotificationSettings];

    return (currentSettings.types & type);
}

#endif

- (void)setApplicationBadgeNumber:(NSInteger)badgeNumber
{
    UIApplication *application = [UIApplication sharedApplication];

    #ifdef __IPHONE_8_0
    // compile with Xcode 6 or higher (iOS SDK >= 8.0)

    if(SYSTEM_VERSION_LESS_THAN(@"8.0"))
    {
        application.applicationIconBadgeNumber = badgeNumber;
    }
    else
    {
        if ([self checkNotificationType:UIUserNotificationTypeBadge])
        {
            NSLog(@"badge number changed to %d", badgeNumber);
            application.applicationIconBadgeNumber = badgeNumber;
        }
    else
        NSLog(@"access denied for UIUserNotificationTypeBadge");
    }

    #else
    // compile with Xcode 5 (iOS SDK < 8.0)
    application.applicationIconBadgeNumber = badgeNumber;

    #endif
}

#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)

CurrentUserNotificationSettings विधि UI ऐप्लिकेशन उदाहरण में उपलब्ध है और आपको सबसे अद्यतित उपयोगकर्ता अधिसूचना प्राथमिकताएं देगा

बैज नंबर के साथ कार्य करना:

[self setApplicationBadgeNumber:0];

के बजाय

application.applicationIconBadgeNumber = 0;

पीएस: Xcode5 और Xcode6 में निर्माण की आवश्यकता के कारण संकलन ( #ifdef __IPHONE_8_0 ) पर जांच रहा है। यदि आपको यह ज़रूरत नहीं है, तो कोड सरलीकृत किया जा सकता है।


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


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

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

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





ios8