2012-12-26 17 views

Odpowiedz

58

Należy ustawić tę [UIApplication sharedApplication].applicationIconBadgeNumber = 0; w obu tych AppDelegate metod, jeżeli aplikacja jest uruchomiona i wysłana do tła następnie uruchomić metodę stosowania didFinishLaunchingWithOptions nie zostanie wywołana więc użyć jednej z tych metod

- (void)applicationWillEnterForeground:(UIApplication *)application 

- (void)applicationDidBecomeActive:(UIApplication *)application 

Dla Swift 3+

- func applicationWillEnterForeground(_ application: UIApplication) 
- func applicationDidBecomeActive(_ application: UIApplication) 
+0

Gdzie sprawdzasz w symulatorze lub w urządzeniu? – Sumanth

+0

W obu im uzyskanie ten sam problem – Deepak

+0

Jeśli spróbujesz uzyskać współrzędne użytkownika w metodzie 'viewDidLoad()', zawsze daje wynik 0,0, ponieważ CLLocation nie jest jeszcze zainicjowany. Więc Użyj metody Delegata, aby uzyskać szczegóły dotyczące lokalizacji '- (void) menadżer locationManager: (CLLocationManager *) didUpdateToLocation: (CLLocation *) newLocation fromLocation: (CLLocation *) oldLocation' – Sumanth

1

Możesz ustawić ten kod w dowolnym miejscu w kodzie. Nie ma znaczenia. Ale ogólnie rzecz biorąc, jest przechowywany w UIApplicationDidFinishLaunching ..

1

Cóż, lepszym sposobem na zrobienie tego jest funkcja, która odejmuje numer znaczka, a następnie UIButton, aby umożliwić użytkownikowi wyczyszczenie znaczka. W domyślnej aplikacji pocztowej, jeśli czytasz jedną wiadomość e-mail, odznaka odejmie jedną z ikon. Nigdy nie powinieneś ustawiać go na 0 podczas uruchamiania lub wznawiania, nie ma sensu i sprawić, by wyglądała błahostka. Odejmij to, gdy użytkownik wchodzi w interakcję z tym wydarzeniem, jest najlepszym sposobem, aby to zrobić. Spraw, by Twoja aplikacja była bardziej profesjonalna, jeśli po prostu ją zresetujesz po uruchomieniu aplikacji, która wie, co znaczy łóżko, może również jej nie używać.

+0

dziękuję za komentarz – Deepak

+1

Rozumiem, co tu robisz, ale nie zgadzam się, że zawsze chcesz dekrement ... wiele aplikacji używa znaczka do oznaczania "rzeczy, które pojawiły się od ostatniej wizyty w aplikacji", ale nie oczekują od ciebie przeczytania wszystkich, ponieważ niektóre z nich mogą nie być dla ciebie interesujące. W takim przypadku chodzi tylko o wyczyszczenie plakietki po wejściu do aplikacji. Tak, możesz mieć kod, który dziesięciokrotnie zmniejsza się, ale byłby to żmudny. – TahoeWolverine

+0

Jako użytkownik denerwuje mnie również, gdy aplikacja nadal ma plakietkę, mimo że nie ma już nic do czytania. Dzieje się tak zazwyczaj z powodu błędu w aplikacji, ale tak czy inaczej, wyraźna odznaka podczas uruchamiania może ominąć tę uciążliwość dla użytkowników. – TahoeWolverine

1

w szybkim 3+

w swojej AppDelegate.Swift, gdy aplikacja aktywny jasne wszystko jak poniżej.

func applicationDidBecomeActive(_ application: UIApplication) { 
     UIApplication.shared.applicationIconBadgeNumber = 0 
    } 
0
UIApplication.shared.applicationIconBadgeNumber = 1 
    UIApplication.shared.applicationIconBadgeNumber = 0 
+0

aby wyczyścić powiadomienie, musisz najpierw zwiększyć liczbę, a następnie wyzerować.to jest błąd ios –

+4

Dziękujemy za ten fragment kodu, który może zapewnić ograniczoną, natychmiastową pomoc. [Poprawne wyjaśnienie znacznie poprawiłoby jego długoterminową wartość] (// meta.stackexchange.com/q/114762/350567), pokazując * dlaczego * jest to dobre rozwiązanie problemu i sprawiłoby, że byłby on bardziej przydatny w przyszłości czytelnicy z innymi, podobnymi pytaniami. Proszę [edytuj] swoją odpowiedź, aby dodać wyjaśnienia, w tym założenia, które podjąłeś. – iBug

Powiązane problemy