Base de connaissance Apps Panel

S’abonner

Intégration du SDK

Mise en place du SDK :

1. Dans votre projet Visual Studio, faites un clic droit sur Références>Gérer mes packages NuGet

2. Dans la fenêtre de recherche taper : « Plugin.SDKAppsPanel »

3. Visual Studio vous proposera le package correspondant, installez la dernière version.

4. Au moment de l’installation, Visual Studio vous demandera d’accepter des licences de librairies Microsoft, cliqué sur le bouton d’acceptation.

5. Cette installation ajoutera un ensemble de librairies requis pour l’utilisation du MBAaS Apps Panel.

6. Veuillez vérifier la présence des Capacités suivante :

    • Si projet Android :

       

        • Via les paramétre du projet visual studio :
          • permission.WAKE_LOCK
          • permission.ACCESS_FINE_LOCATION
          • permission.ACCESS_NETWORK_STATE
          • permission.ACCESS_WIFI_STATE
          • permission.BATTERY_STATS
          • permission.READ_PHONE_STATE

       

    • En éditant le fichier AndroidManifest (situé dans Properties):
      • <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
      • <uses-permission android:name="nomDuPackage.permission.C2D_MESSAGE" />
      • <permission android:name="nomDuPackage" android:protectionLevel="signature" />
      • Dans les balises “<application>” :

<receiver android:name="com.google.android.gms.gcm.GcmReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND">

              <intent-filter>

              <action android:name="com.google.android.c2dm.intent.RECEIVE" />

              <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

              <category android:name="nomDuPackage" />

              </intent-filter>

</receiver>

    • Si projet Iphone :

       

    • Dans le info.plist ajouter la clé :
      • <key>NSLocationWhenInUseUsageDescription</key>
      • <string>Voulez vous indiquez votre position ?</string>

7. Si le projet est un projet Android, veuillez ajoutez les méthode suivante au sein de votre fichier MainApplication.cs  :


public override void OnCreate()
               {
                             base.OnCreate();
                             RegisterActivityLifecycleCallbacks(this);
                             AppDomain.CurrentDomain.UnhandledException += HandleUnhandledException;
                             AndroidEnvironment.UnhandledExceptionRaiser += HandleAndroidException;
               }

               /// 
               /// cath a exception raised by JAVA  (By the OS)
               /// 
               ///
               ///
               private void HandleUnhandledException(object sender, UnhandledExceptionEventArgs e)
               {
                             Dictionary<string, string> crashInfo = new Dictionary<string, string>();
                             crashInfo.Add("content", ((Exception)e.ExceptionObject).StackTrace);
                             crashInfo.Add("name", ((Exception)e.ExceptionObject).GetType().Name);
                             crashInfo.Add("reason", ((Exception)e.ExceptionObject).Message);
                             Task.Run(() => CrashReportTool.CrashReport(crashInfo)).Wait();
                             System.Environment.Exit(0);
               }
 
               /// 
               /// catch the exception raised by C# (developement part)
               /// 
               ///
               ///
               private void HandleAndroidException(object sender, RaiseThrowableEventArgs e)
               {
                             Dictionary<string, string> crashInfo = new Dictionary<string, string>();
                             e.Handled = true;
                             crashInfo.Add("content", e.Exception.StackTrace);
                             crashInfo.Add("name", e.Exception.GetType().Name);
                             crashInfo.Add("reason", e.Exception.Message);
                             Task.Run(() => CrashReportTool.CrashReport(crashInfo)).Wait();
                             System.Environment.Exit(0);
               }


public async void OnActivityStopped(Activity activity)
               {
                             await APStats.sendValue();
               }

8. Si votre projet est un projet Iphone au niveau du fichier AppDelegate.xaml.cs, veuillez ajouter les implémentation suivante :


public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
                      // create a new window instance based on the screen size
                      Window = new UIWindow(UIScreen.MainScreen.Bounds);
                      // If you have defined a root view controller, set it here:
                      var indexVC = new ViewController1();
                      Window.RootViewController = indexVC;
                      // make the window visible
                      Window.MakeKeyAndVisible();
                      AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
                      return true;
}

private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
                      var newExc = new Exception("CurrentDomainOnUnhandledException", e.ExceptionObject as Exception);
                      // An unhandled exception has occurred; break into the debugger
                      Dictionary<string, string> crashInfo = new Dictionary<string, string>();
                      crashInfo.Add("StackTrace", newExc.StackTrace);
                      crashInfo.Add("MessageError", newExc.Message);
                      crashInfo.Add("Source", newExc.Source);
                      CrashReportTool.CrashReport(crashInfo);
}

public override void ReceivedRemoteNotification(UIApplication application, NSDictionary userInfo)
{
                      if (null != userInfo && userInfo.ContainsKey(new NSString("aps")))
                      {
NSDictionary apsInfo = userInfo.ObjectForKey(new NSString("aps")) as NSDictionary;
NSDictionary alert = apsInfo.ObjectForKey(new NSString("alert")) as NSDictionary;

NSString message = alert.GetType() == typeof(NSMutableDictionary) ? alert[new NSString("body")] as NSString : apsInfo.ObjectForKey(new NSString("alert")) as NSString;
UIApplication.SharedApplication.ApplicationIconBadgeNumber = 1;
if (!string.IsNullOrEmpty(message))
{
UIAlertView avAlert = new UIAlertView(NSBundle.MainBundle.ObjectForInfoDictionary("CFBundleDisplayName").ToString(), message, null, APTextManager.stringForKey("Close"), null);
               avAlert.Show();
               }
                      }
}


       public override void OnResignActivation(UIApplication application)
       {
                      APStats.sendValue();
       }

9. Pour initialiser le SDK vous n’avez qu'à ajouter la ligne suivante dans le constructeur de la première page appelé par votre application :

  • Pour Projet Iphone dans votre premiere vue appelé
  • Pour Android dans votre Activité ayant l’attribut MainLaucher à true

AppsPanel.Instance.Init("fr", "cleAppsPanel", "VersionDeLapp", "CodeAppsPanel", this);


NB : Pour un fonctionnement optimal veuillez ajouter using Plugin.SDKAppsPanel; dans toutes les pages où vous utilisez des implémentations du SDK Apps Panel.

Cet article vous a-t-il été utile ?
Utilisateurs qui ont trouvé cela utile : 0 sur 0
Vous avez d’autres questions ? Envoyer une demande