Badge count is persisted after deleting an app and installing it again

前端 未结 4 2247
猫巷女王i
猫巷女王i 2020-12-18 20:38

My application has a notification section in it, and the sum of the notifications are displayed in the form of Badge Count on the app icon. When the user accesses the notifi

相关标签:
4条回答
  • 2020-12-18 21:01

    Run freshInstallationCheck function in didFinishLaunchingWithOptions section.

        func freshInstallationCheck() {
            let defaults = UserDefaults.standard
            guard let currentAppVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String else { return }
            guard let previousVersion = defaults.string(forKey: "appVersion") else {
                // Key does not exist in UserDefaults, must be a fresh install
                print("fresh install")
                //  Writing version to UserDefaults for the first time
                defaults.set(currentAppVersion, forKey: "appVersion")
                // reinstall application, force to set icon to zero
                UIApplication.shared.applicationIconBadgeNumber = 0
                return
            }
    
            let comparisonResult = currentAppVersion.compare(previousVersion, options: .numeric, range: nil, locale: nil)
            switch comparisonResult {
            case .orderedSame:
                // nothing to do
                break
            case .orderedAscending, .orderedDescending:
                // new version update or downgrade
    
                break
            }
    
            // Updating new version to UserDefaults
            defaults.set(currentAppVersion, forKey: "appVersion")
        }
    
    0 讨论(0)
  • 2020-12-18 21:02

    I have same issue before some days ago when I was tested app from testFlight.

    Generally this problem might be occur when you deleted the app (while it was showing some badge number), and re-installed it again. But it difficult to says that where is actual problem.

    Read what Apple's official documentation is saying.

    Resetting the Push Notifications Permissions Alert on iOS The first time a push-enabled app registers for push notifications, iOS asks the user if they wish to receive notifications for that app. Once the user has responded to this alert it is not presented again unless the device is restored or the app has been uninstalled for at least a day.

    If you want to simulate a first-time run of your app, you can leave the app uninstalled for a day. You can achieve the latter without actually waiting a day by setting the system clock forward a day or more, turning the device off completely, then turning the device back on.

    There are some suggestion from my experience:

    • OFF your notification form settings
    • And set badge 0 at server side and then delete and reinstall your app from your device. - After installation is over then run app
    • After run app agin delete you app from device and then reset badge at server 1 and ON your notification form settings.

    Not sure but might be this will working for you. :)

    0 讨论(0)
  • 2020-12-18 21:09

    The badge count is maintained by the operating system, independent of the app. When an app is uninstalled (deleted), some values are retained by the operating system, including the badge count. When the app is uninstalled, no developer method or script is called. You will either have to accept this limitation, or change your app's design to rethink and overcome this problem.

    0 讨论(0)
  • 2020-12-18 21:14

    Execute below code in didFinishLaunchingWithOptions

    if (![[NSUserDefaults standardUserDefaults] objectForKey:@"is_first_time"]) 
    {        
     [application cancelAllLocalNotifications]; 
     // Restart the Local Notifications list
     application.applicationIconBadgeNumber = 0;
     [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool:YES] forKey:@"is_first_time"];  }
    
    0 讨论(0)
提交回复
热议问题