Compréhension des applications Forcedroid
Objectifs de formation
Une fois cette unité terminée, vous pourrez :
- Décrire le fonctionnement global du kit de développement Mobile SDK Salesforce natif pour une application Android
- Identifier deux classes principales d’une application forcedroid
- Citer les tâches que l’objet SalesforceSDKManager gère pour vous
Vue d'ensemble du flux de l'application
Vous avez créé et exécuté une nouvelle application forcedroid. Vous vous demandez ce qu’il a fait fonctionner ?
Voici un diagramme qui montre une vue d’ensemble du flux de démarrage de l’application.
Dans votre application, « Objet application » est une instance de votre classe MainApplication, et « Activité principale » représente votre classe MainActivity. La classe MainApplication crée les composants de base de votre application, puis transmet le contrôle à l’objet unique MobileSyncSDKManager. MobileSyncSDKManager- une sous-classe de SalesforceSDKManager - lance ensuite le flux de connexion de Salesforce et, si l’authentification de l’utilisateur réussit, transmet le contrôle à la classe MainActivity. MainActivity instancie et affiche tout ce qui figure sur l’écran de votre vue de liste.
Les codes secrets, la connexion, la déconnexion et la mise à jour sont des tâches gérées par le singleton MobileSyncSDKManager. Les objets de classe interne se chargent des protocoles OAuth. Comme vous pouvez le constater, la partie du code secret du flux est facultative. Elle se manifeste uniquement si votre application connectée active les codes secrets, et un administrateur Salesforce peut réexaminer cette stratégie à tout moment. Dans tous les cas, ne vous souciez pas des codes secrets. Le kit de développement Mobile SDK assure la totalité de l’implémentation en arrière-plan.
Qu’est-ce qu’une application Forcedroid ?
- Exécutant des opérations CRUD (créer, lire, mettre à jour, supprimer) sur des enregistrements Salesforce
- Ajoutant des activités personnalisées
- Appelant d’autres composants
- Exécuter n’importe quelle autre fonction que la portée de votre projet, votre propre imagination et la technologie actuelle le permettent
Lorsque forcedroid crée une application native, il fait une copie d’un projet modèle du kit de développement Mobile SDK et le personnalise pour correspondre à votre entrée de ligne de commande. Examinons quelques éléments standard produits :
- Une classe d'application qui étend android.app.Application. Cette classe sert de point d’entrée de l’application. Dans votre application, cette classe est nommée MainApplication.
- Une classe d’activité principale qui étend android.app.Activity. Cette classe définit un écran et contient la majeure partie de la logique personnalisée de l’application. Dans les applications forcedroid, cette classe est nommée MainActivity. Elle étend SalesforceActivity, qui étend à son tour android.app.Activity.
Comme avec n’importe quelle application Android, le fichier AndroidManifest.xml indique la configuration de l’application, en spécifiant la classe d’application et toutes les classes d’activité.
La classe d’application
Votre classe d’application effectue deux tâches principales :
- Remplace la méthode Android Application.onCreate ().
- Dans le remplacement de onCreate () :
- appelle la méthode de la super-classe onCreate ().
- Initialise le kit de développement mobile Salesforce en appelant initNative () sur l’objet de gestionnaire du kit de développement (MobileSyncSDKManager).
- fournit du code commenté facultatif que vous pouvez rétablir pour utiliser votre application en tant que fournisseur d’identité Salesforce ;
- fournit du code commenté facultatif que vous pouvez rétablir pour prendre en charge les notifications automatiques.
- Dans l’écran de bienvenue d’Android Studio, sélectionnez Import project (Eclipse ADT, Gradle, etc.). Si Android Studio est déjà ouvert, vous avez également la possibilité de cliquer sur .
- Accédez au répertoire cible que vous avez spécifié à l’invite de commande forcedroid, puis sélectionnez-le (astuce : le répertoire cible est « TrailAndroidApps », si toutefois vous avez respecté les règles).
- Cliquez sur Choose.
- Lorsque la fenêtre d’édition d’Android Studio s’affiche, ouvrez la vue de projet ( ).
- Dans la fenêtre Project (Projet), développez , puis double-cliquez sur MainApplication.
La classe MainApplication est très simple. Elle définit un remplacement d’une méthode de classe de base unique, onCreate(). Quelles sont les autres fonctions du remplacement ? Il appelle la méthode OnCreate() de la super classe, puis initialise l’objet singleton MobileSyncSDKManager.
/** * Application class for our application. */ public class MainApplication extends Application { @Override public void onCreate() { super.onCreate(); MobileSyncSDKManager.initNative(getApplicationContext(), MainActivity.class); /* * Uncomment the following line to enable IDP login flow. This will allow the user to * either authenticate using the current app or use a designated IDP app for login. * Replace 'idpAppURIScheme' with the URI scheme of the IDP app meant to be used. */ // MobileSyncSDKManager.getInstance().setIDPAppURIScheme(idpAppURIScheme); /* * Un-comment the line below to enable push notifications in this app. * Replace 'pnInterface' with your implementation of 'PushNotificationInterface'. * Add your Google package ID in 'bootonfig.xml', as the value * for the key 'androidPushNotificationClientId'. */ // SalesforceSDKManager.getInstance().setPushNotificationReceiver(pnInterface); } }
- Un contexte d’application, car il doit trouver la configuration de votre application.
- Une référence à la classe d’activité principale, MainActivity.class, que MobileSyncSDKManager utilise à la fin du flux de connexion pour déclencher la logique personnalisée de votre application.
La classe Activité principale
Fort heureusement, forcedroid est suffisamment intelligente, votre classe MainActivity peut étendre SalesforceActivity. C’est une chance, car de nombreuses actions sont ainsi automatiquement exécutées pour vous. Par exemple, SalesforceActivity interrompt et reprend automatiquement les événements, y compris les nouvelles saisies de code secret si nécessaire. Si vous aviez utilisé à la place la classe de base d’activité non-Salesforce (stratégie pas interdite, mais pas non plus recommandée), vous auriez dû écrire le code vous-même. Vous pouvez définir autant de classes d’activité que votre application l’exige. Cependant, pour chaque activité, il est préférable d’étendre une classe de base du kit de développement Mobile SDK, telle que SalesforceActivity ou SalesforceListActivity.
La classe MainActivity se charge d’envoyer une requête REST à Salesforce, puis de traiter la réponse. Elle utilise les enregistrements qu’elle reçoit de Salesforce pour renseigner une vue de liste. Elle fournit également deux boutons qui permettent à l’utilisateur d’interroger les Comptes ou bien les Contacts, un bouton pour effacer l’affichage de l’enregistrement et un autre pour se déconnecter.
- Dans la fenêtre du projet Android Studio, développez , puis double-cliquez sur main.xml.
- En bas de la fenêtre de l’éditeur, sélectionnez l’onglet Text.
<include layout="@layout/header" />
Le fichier Manifest de l’application
- Dans la fenêtre Android Studio Project, agrandissez .
- Double-cliquez sur AndroidManifest.xml.
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mytrail.android" android:versionCode="1" android:versionName="1.0" android:installLocation="internalOnly">
<application android:icon="@drawable/sf__icon" android:label="MyTrailNative" android:name=".MainApplication" ...
De plus, chaque activité que vous ou forcedroid définissez a une description ici. Par exemple, ici le nœud unique application/activity représente la première activité qui s’affiche après la connexion. Comme vous pouvez le constater, la propriété android:name de l’activité référence le nom de classe de votre activité principale. Voici le fragment XML application/activity d’un fichier AndroidManifest.xml forcedroid.
<!-- Launcher screen --> <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar.Fullscreen"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
Toutes les autres informations du fichier manifest par défaut correspondent à la configuration Android standard. Comme avec n’importe quelle application Android, vous pouvez ajouter les propres composants de votre application au nœud <application>, notamment les activités personnalisées, les services et les récepteurs.
Vous avez découvert ce que contient une application forcedroid. Examinons maintenant les informations que vous êtes impatient de connaître : comment accéder aux données Salesforce.