Windows phone 10 - Afficher un popup de confirmation avant de fermer l'application

 25/09/2019 |   Admin |  Windows phone


Dans une application universelle, pour la famille Windows Phone, l'appui sur le bouton Back entraine un retour sur la page précédente. Si cette dernière est la première page de l'application, l'application va se fermer.

Ce fonctionnement est logique mais un utilisateur peut utiliser cette fonction intentionnellement. C'est pour cela que l'ajout d'un popup de confirmation peut-être utile dans certains cas.

Dans la méthode OnLaunched de la classe App (App.xaml.cs)

Dans un premier temps, il faut tester si le device est un téléphone et si le bouton back est présent :

if (ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons"))
{
    HardwareButtons.BackPressed += OnBackPressed;
}

Ensuite, déclarer une méthode privée au sein de cette même classe :

private async void OnBackPressed(object sender, BackPressedEventArgs e)
{
    var frame = (Frame)Window.Current.Content;
    e.Handled = true;

    if (frame.CanGoBack)
    {        
        frame.GoBack();
    }
    else
    {
        var msg = new MessageDialog("Etes-vous sûr de vouloir quitter l'application ?");
        var okBtn = new UICommand("Oui");
        var cancelBtn = new UICommand("Non");
        msg.Commands.Add(okBtn);
        msg.Commands.Add(cancelBtn);
        IUICommand result = await msg.ShowAsync();
 
       if (result != null && result.Label == "Oui")
       {
            Application.Current.Exit();
       }
    }
}

[Capture]

Lire >>

Obtenir mon adresse ip public en c#

 24/09/2019 |   Admin |  C#


La meilleure facon d'obtenir son adresse ip public c'est de le demander a quelqu'un d'autre

Voici le code qui va donner votre adresse ip public

public string GetPublicIP()
{
string result = string.Empty;
WebRequest request = WebRequest.Create("http://checkip.dyndns.org/");
using (WebResponse response = request.GetResponse())
using (StreamReader stream = newStreamReader(response.GetResponseStream()))
{
result = stream.ReadToEnd();
}
 //Search for the ip in the html
int first = result.IndexOf("Address: ") + 9;
int last = result.LastIndexOf("</body>");
result = result.Substring(first, last - first);
  
return result;
}

Lire >>

Calculer la distance entre deux points en .Net avec la formule de Haversine

 01/01/2019 |   Admin |  C#


Voici une méthode écrite en c# permettant de calculer la distance entre 2 coordonnées (latitude / longitude). Résulat en kilometres.

Idéal pour la géolocalisation mobile.

(Pour les fans de maths : http://en.wikipedia.org/wiki/Haversine_formula)

///<summary>
/// Get distance between 2 points in kilometers
///</summary>
///<param name="latitudePointA">Latitute point A</param>
///<param name="longitudePointA">Longitute point A</param>
///<param name="latitudePointB">Latitude point B</param>
///<param name="longitudePointB">Longitude point B</param>
///<returns>The distance</returns>
public static double GetDistanceBetween(double latitudePointA, double longitudePointA, double latitudePointB, double longitudePointB)
{
    double dDistance = Double.MinValue;
  
    // Convert coordinates to radians
    double dLatAInRad = latitudePointA * (Math.PI / 180.0);
    double dLongAInRad = longitudePointA * (Math.PI / 180.0);
    double dLatBInRad = latitudePointB * (Math.PI / 180.0);
    double dLongBInRad = longitudePointB * (Math.PI / 180.0);
  
    double dLongitude = dLongBInRad - dLongAInRad;
    double dLatitude = dLatBInRad - dLatAInRad;
  
    // Intermediate result a.
    double a = Math.Pow(Math.Sin(dLatitude / 2.0), 2.0) +
               
...

Lire >>

Spam checker API avec ASP.NET C# - Comment éviter le SPAM avec stopforumspam

 01/01/2019 |   Admin |  C#


Avoir rencontré plusieurs problemes de spam dans certaines de mes applications j'ai décidé de me pencher sur le sujet. Apres avoir étudié différentes solutions je décide d'utiliser l'API gratuite du site stopforumspam.

Elle est gratuite, simple d'utilisation et communautaire, c'est pourquoi il ne faut pas hésiter a envoyer la liste de ses potentiels spammeurs sur ce forum.

Il y a juste une limite de 20000 requets a ne pas dépasser par jour, ce qui est correcte.

Pour moi le nom d'utilisateur n'est pas assez fiable pour savoir si c'est un spam ou non. C'est pourquoi la détection va se faire premierement par l'adresse IP de l'utilisateur puis par l'email.

Cette API est tres fiable mais l'adresse IP peut etre lié a un autre utilisateur par exemple. Si vous voulez filtrer des commentaires je vous conseille donc de ne pas les supprimer mais de les marquer avec un tag IsSpam = 1

C'est cadeaux, voici la classe:

///<summary>
/// SpamChecker class
///</summary>
public class SpamChecker
{
    ///<summary>
    /// Check if the comment is inside the spam list
    ///</summary>
    ///<param name="ip">The ip to test</param>
    ///<param name="email">The email to test</param>
    ///<returns>True if it's a spam</returns>
    public static bool Check(string ip, string email)
 
...

Lire >>

Copier coller un répertoire en C# (Copy-Paste folder)

 01/01/2019 |   Admin |  C#


Copier le contenu d'un répertoire en utilisant la récursivité :

private static void CopyAll(DirectoryInfo source, DirectoryInfo target)
{
   // Check if the target directory exists, if not, create it.
   if (Directory.Exists(target.FullName) == false)
   {
       Directory.CreateDirectory(target.FullName);
   }
   // Copy each file into the new directory.
   foreach (FileInfo fi in source.GetFiles())
   {
fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true);
   }
   // Copy each subdirectory using recursion.
   foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
   {
       DirectoryInfo nextTargetSubDir = target.CreateSubdirectory(diSourceSubDir.Name);
       CopyAll(diSourceSubDir, nextTargetSubDir);
   }
}

Lire >>

Trier une liste en c# (avec delegate et sort)

 01/01/2019 |   Admin |  C#


List<TheType> theList = new List<TheType>();
theList.Sort(delegate(TheType t1, TheType t2)
{  return t1.PropertyToOrder.CompareTo(t2.PropertyToOrder);
});

Lire >>

FileHelper pour Winrt - Windows Phone et Windows 8.1

 01/01/2019 |   Admin |  Xamarin


Il existe des API du Framework .NET qui n'existent pas dans les API .NET des Windows Store Apps.

Par exemple Sytem.IO, dans l'API .Net pour les Windows Apps ne contient pas System.IO.IsolatedStorage mais Windows.Storage.

Cette API fournit un comportement similaire mais son utiliastion est très différente. 

Après le développement de plusieurs applications Windows Store, j'ai remarqué que le développement d'une classe FileHelper serait utile.

En effet, des méthodes comme FileExists() ou FolderExists() ne sont pas proposés par Windows.Storage alors que leur utilisation est quasiment inévitable.

J'ai donc décidé de mettre ce code sur GitHub pour qu'il puisse être réutilisé et amélioré. Le code source ainsi que le sample d'une Universal Apps sont disponibles.

Voici la liste des fonctions majeures proposées :

FileHelper :

FileExistsAsync()

FolderExistsAsync()

GetFileStreamAsync()

GetContentFromFileAsync()

GetFileBytesAsync()

WriteToFileAsync()

ConvertStorageFileToBase64StringAsync()

EnumerateFilesAsync()

GetSubFoldersAsync()

DeserialiseXml<T>()

ZipHelper :

ZipFileAsync()

UnZipFileAsync()

Vous pouvez retrouver ce projet sur GitHub et le package nuget correspondant : Ph.WinRtFileHelper

Lire >>

  • 1