Pastille "1" sur l'icône de l'app, mais sans serveur

Bonjour à  tous,


 


Je souhaiterais ajouter une pastille "1" à  l'icône de mon appli, mais sans passer par un serveur. Plus précisément, je souhaiterais faire en sorte qu'à  une date précise une pastille rouge "1" soit ajoutée à  l'icône de mon appli (mais sans serveur)


 


À votre avis, est-ce possible ?


 


(Pour tout ce qui est server-side, j'utilise CloudKit, c'est pourquoi je cherche une solution sans passer par le serveur)


Réponses

  • Merci

    J'ai parcouru en vitesse il semble que ce soit possible !
  • Je confirme. C'est possible.


  • LeChatNoirLeChatNoir Membre, Modérateur

    L'idéal, ça serait de dire ici comment faire :)


     


    Au moins les grands principes.


  • MAGEMAGE Membre
    août 2016 modifié #6

    Tu peux stocker la date dans un userdefault



    fireDate = NSUserDefaults.standardUserDefaults().objectForKey("fireDate") as! NSDate!

    Et faire apparaà®tre la pastille :



    ​if(fireDate.isMoreThanDate(NSDate())) {
                let intervalinsecond = ***
                let localNotification = UILocalNotification()
                localNotification.fireDate = NSDate(timeIntervalSinceNow: Double(intervalinsecond))
                fireDate = localNotification.fireDate!
                NSUserDefaults.standardUserDefaults().setObject(General.fireDate, forKey:"fireDate")
                localNotification.alertBody = "Répondre au questionnaire"
                localNotification.soundName = "alert.mp3"
                localNotification.timeZone = NSTimeZone.defaultTimeZone()
                localNotification.applicationIconBadgeNumber = UIApplication.sharedApplication().applicationIconBadgeNumber + 1
                UIApplication.sharedApplication().scheduleLocalNotification(localNotification)
    }

    C'est un peu du copier collé de ce que j'utilise. Je te laisse voir pour calculer l'intervalle en seconde entre le moment de la notification et le moment présent (intervalinsecond).


     


    En espérant que cela peut te donner une piste.


     


    Dans l'appDelegate, j'indique aussi 


     


       



     func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
            // Override point for customization after application launch.

            // notifications
            application.applicationIconBadgeNumber = 0
            
            let types:UIUserNotificationType = ([.Alert, .Sound, .Badge])
            let settings:UIUserNotificationSettings = UIUserNotificationSettings(forTypes: types, categories: nil)
            application.registerUserNotificationSettings(settings)
            application.registerForRemoteNotifications()
            
            return true
        }

  • colas_colas_ Membre
    septembre 2016 modifié #7

    Voilà  comment j'ai fait : (grosso modo comme MAGE, mais je poste quand même mon code, au cas où)


     


    1) dans l'AppDelegate



    UIUserNotificationType types = (UIUserNotificationType) (UIUserNotificationTypeBadge | UIUserNotificationTypeAlert);
    // UIUserNotificationTypeSound;
    UIUserNotificationSettings *mySettings =
    [UIUserNotificationSettings settingsForTypes:types
    categories:nil];
    [[UIApplication sharedApplication] registerUserNotificationSettings:mySettings];

    2) Quand on veut lancer la notif locale



    /*
    Remove the badge and cancel notifications
    */
    [UIApplication sharedApplication].applicationIconBadgeNumber = 0;
    [[UIApplication sharedApplication] cancelAllLocalNotifications];


    /*
    Send notification
    */
    UILocalNotification *notification;
    notification = [[UILocalNotification alloc] init];
    notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:60*5];
    notification.applicationIconBadgeNumber = 1;
    notification.alertBody = @Le message ici;
    notification.timeZone = [NSTimeZone defaultTimeZone];

    [[UIApplication sharedApplication] scheduleLocalNotification:notification];


Connectez-vous ou Inscrivez-vous pour répondre.