Quelques pages d’un blog de 2013/2014 sur http://windev-fr.over-blog.com, abandonné en 2020.
Merci à son auteur François-Xavier Cadeau !
#import <CoreTelephony/CTCarrier.h> #import <CoreTelephony/CTTelephonyNetworkInfo.h> // NSString* SIMNomOperateur() { //Initialisation des données CTTelephonyNetworkInfo *networkInfo = [[[CTTelephonyNetworkInfo alloc] init] autorelease]; if(networkInfo==nil) return @""; CTCarrier *carrier = [networkInfo subscriberCellularProvider]; if(carrier==nil) return @""; //On accède au code pays NSString *mcc = [carrier mobileCountryCode]; if (mcc == nil) return @""; //On accède au nom de l'opérateur de téléphonie mobileCountryCode NSString *carrierName = [carrier carrierName]; return carrierName; }
Il existe sur le Net des Web Services, plus ou moins contraignant dans leur utilisation, qui permettent de récupérer une multitude d’informations depuis une adresse, un lieu ou même un monument sans se soucier de la plate-forme utilisé.
Exemple avec l’API Google Map API V3:
L’URL à appelée pour la Tour Eiffel – http://maps.googleapis.com/maps/api/geocode/xml?address=Tour+Eiffel&sensor=false
Données XML retournées par Google:
OK point_of_interest establishment Tour Eiffel, Champ de Mars, 5 Avenue Anatole France, 75007 Paris, France Tour Eiffel Tour Eiffel point_of_interest establishment Champ de Mars Champ de Mars premise 5 5 street_number Avenue Anatole France Av. Anatole France route Paris Paris locality political Paris 75 administrative_area_level_2 political Île-de-France IDF administrative_area_level_1 political France FR country political 75007 75007 postal_code 48.8582285 2.2943877 APPROXIMATE 48.8568795 2.2930387 48.8595775 2.2957367
Ce bout de code permet de lancer une application présente sur l’iPad/iPhone.
#import <UIKit/UIKit.h> void LanceAppliAssocieeIOS(NSString* cheminfic ) [[UIApplication sharedApplication] openURL:[NSURL URLWithString:cheminfic]]; }
Lancer l’App Store, Facebook, iTunes, Safari, Skype : http://www.benoit-deldicque.com/blog/iphone-apps-url-schemes/
Le PersoMenu permet de personnaliser des options du menu de WinDev, comme ouvrir un fichier spécifique, lancer des applications (NotePad, Calculatrice, …).
Dans la configuration du PersoMenu, on peut ajouter des options ou un Dossier dans lequel on classera les différentes options. Les options sont des actions à exécuter qui sont saisies en ligne de commande.
Le PersoMenu est accessible depuis l’icône « 18 » en haut à gauche de WinDev. Pour les versions antérieurs à la version 18, le PersoMenu est accessible depuis le menu principal, entre Outils et Fenêtre. Si le PersoMenu n’est pas visible, il peut être activé depuis les Outils et Options de l’environnement.
Le description d’une option du PersoMenu est composé:
- Libellé du menu
- Ligne de commande en DOS
- Autres options: Exécution silencieuse, Bloquante ou non
- Utilisation de Macro: {$NomProjet}, {$RepSelecteur}, …
Exemple 1: Copier l’objet généré dans la configuration en cours dans un répertoire temporaire
rd « C:\temp\{$NomObjetGenere} » /S /Q
xcopy « {$RepObjetGenere}\{$NomObjetGenere} » « C:\temp\{$NomObjetGenere}\ » /H /E
On supprime les données existantes de l’objet « rd » et on copie les nouvelles données « xcopy ».
Exemple 2: Copier l’installation IOS générer par WinDev Mobile directement sur un MAC pour compilation X-Code
« C:\Mes Projets Mobile\IOS\pscp » -r -pw « {$NomExe} » UserHost@Host:/Destination
Pour faire cette copie on utilise l’utilitaire pscp.exe de transfert de fichier via une connexion SSH.
Utilisation de PSCP: http://marc.terrier.free.fr/docputty/Chapter5.html (hébergé ici car aussi disparu d’internet)
Télécharger PSCP.exe: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Ce bout de code permet de savoir si l’iPad/iPhone est connecté au Wifi. Retourne un booléen (Vrai ou Faux). Ce code ne marche pas avec la 3G, mais uniquement avec le Wifi.
#import <sys/socket.h> #import <netinet/in.h> #import <SystemConfiguration/SystemConfiguration.h> bool WifiEstConnecte() { struct sockaddr_in zeroAddress; bzero(&zeroAddress, sizeof(zeroAddress)); zeroAddress.sin_len = sizeof(zeroAddress); zeroAddress.sin_family = AF_INET; SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr*)&zeroAddress); bool bWifi = FALSE; bool bWWAN = FALSE; SCNetworkReachabilityFlags flags; bool bConnectionRequired = TRUE; if (SCNetworkReachabilityGetFlags(reachability, &flags)) { if ((flags & kSCNetworkReachabilityFlagsReachable) == 0) { // Si l'hôte cible n'est pas accessible bWifi = FALSE; bWWAN = FALSE; } else { if ((flags & kSCNetworkReachabilityFlagsConnectionRequired) == 0) { // Si l'hôte cible est accessible et aucune connexion n'est nécessaire // alors nous partons du principe que vous êtes sur le Wi-Fi bWifi = TRUE; } if ((((flags & kSCNetworkReachabilityFlagsConnectionOnDemand ) != 0) || (flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) != 0)) { // ... et la connexion est à la demande (ou sur le trafic) si l'application appelante utilise l'API CFSocketStream ou supérieur if ((flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0) { // ... et aucune intervention n'est nécessaire bWifi = TRUE; } } if ((flags & kSCNetworkReachabilityFlagsIsWWAN) == kSCNetworkReachabilityFlagsIsWWAN) { // ... mais les connexions WWAN sont OK si l'application appelante utilise la CFNetwork (CFSocketStream?) API bWWAN = TRUE; } } bConnectionRequired = (flags & kSCNetworkReachabilityFlagsConnectionRequired); } return !bConnectionRequired && bWifi; }
Faire apparaître le message à l’ouverture d’une fenêtre «FEN_Produits», lors d’un chargement d’une zone répétée par exemple, par un clic sur un bouton «BTN_Ouvre»:
Clic sur BTN_Ouvre
TitreSuivant("Veuillez patienter...") Sablier(Vrai) Multitâche(-1) OuvreFille(FEN_Produits)
Fin d’initialisation de FEN_Produits
Sablier(Faux)
Il existe aussi la possibilité de développer une procédure Objective-C dans WinDev Mobile pour gérer le sablier sous iPad/iPhone.
void AjouteBadgeApplication(int nNumeroSemaine) { [UIApplication sharedApplication].applicationIconBadgeNumber = nNumeroSemaine; }
Une nouveauté depuis la version 19 de WinDev, il est maintenant possible de renvoyer plusieurs valeurs.
RENVOYER(, , ... ) RETOUR = (, )
Typage des valeurs de retour :
PROCEDURE MaProcedure() : ([, [, ... []]])