Grundlegendes zu Forcedroid-Anwendungen
Lernziele
Nachdem Sie diese Lektion abgeschlossen haben, sind Sie in der Lage, die folgenden Aufgaben auszuführen:
- Beschreiben des Gesamt-Flows einer nativen Salesforce Mobile SDK-Anwendung für Android
- Benennen der zwei Hauptklassen einer forcedroid-Anwendung
- Auflisten von Aufgaben, die das SalesforceSDKManager-Objekt für Sie erledigt
Übersicht über den Anwendungs-Flow
Sie haben eine neue native forcedroid-Anwendung erstellt und ausgeführt. Sie fragen sich, was der Motor des Ganzen ist?
Hier sehen Sie ein Diagramm, das auf höherer Ebene darstellt, wie der Ablauf beim Hochfahren funktioniert.
In Ihrer Anwendung ist das "Anwendungsobjekt" eine Instanz Ihrer MainApplication-Klasse, und "Main Activity" steht für ihre MainActivity-Klasse. Die MainApplication-Klasse erzeugt die Basiskomponenten Ihrer Anwendung und übergibt dann die Steuerung an das Singleton-Objekt MobileSyncSDKManager. MobileSyncSDKManager, eine Unterklasse von SalesforceSDKManager, startet wiederum den Salesforce-Anmelde-Flow und übergibt – sofern die Benutzerauthentifizierung erfolgreich war – die Steuerung an die MainActivity-Klasse. MainActivity instanziiert und zeigt alles an, was in Ihrer Listenansicht zu sehen ist.
Zugangscodes, Anmeldung, Abmeldung und Bereinigung sind Aufgaben, die vom Singleton MobileSyncSDKManager verwaltet werden. Interne Klassenobjekte sorgen für die OAuth-Protokolle. Wie Sie sehen, ist der Zugangscode-Abschnitt des Flows optional. Das ist nur dann der Fall, wenn Ihre verbundene Anwendung Zugangscodes aktiviert; ein Salesforce-Administrator kann diese Richtlinie jederzeit rückgängig machen. Jedenfalls brauchen Sie sich um die Zugangscodes überhaupt nicht zu kümmern. Das Mobile SDK bietet eine umfassende Implementierung im Hintergrund.
Was ist der Inhalt einer Forcedroid-Anwendung?
- Anwenden von CRUD-Vorgängen (Create, Read, Update, Delete, d. h. Erstellen, Lesen, Aktualisieren, Löschen) auf Salesforce-Datensätze
- Hinzufügen benutzerdefinierter Aktivitäten
- Aufrufen anderer Komponenten
- Alle sonstigen Maßnahmen, die Ihr Projektumfang, Ihre eigene Vorstellungskraft und der Stand der Technik ermöglichen
Wenn forcedroid eine native Anwendung erzeugt, legt es eine Kopie eines Mobile SDK-Vorlagenprojekts an und passt diese Ihrer Befehlszeileneingabe an. Nun schauen wir uns doch mal einige der Standardelemente an, die mit dieser "Keksstanze" erzeugt werden.
- Eine Anwendungsklasse, die android.app.Application erweitert. Diese Klasse dient als Einstiegspunkt für die Anwendung. In Ihrer Anwendung heißt diese Klasse MainApplication.
- Eine Hauptaktivitätsklasse, die android.app.Activity erweitert. Diese Klasse definiert einen Bildschirm; sie enthält den Großteil der benutzerdefinierten Logik der Anwendung. In forcedroid-Anwendungen heißt diese Klasse MainActivity. Sie erweitert SalesforceActivity, das wiederum android.app.Activity erweitert.
Wie bei jeder Android-Anwendung designiert die AndroidManifest.xml-Datei die Konfiguration der Anwendung, indem sie die Anwendungsklasse und alle Aktivitätsklassen angibt.
Die Anwendungsklasse
Ihre Anwendungsklasse erledigt zwei Hauptaufgaben:
- Sie überschreibt die Android Application.onCreate()-Methode.
- In ihrer onCreate()-Überschreibung geschieht Folgendes:
- Die onCreate()-Methode der Superklasse wird aufgerufen.
- Das Salesforce Mobile SDK wird durch Aufrufen von initNative() für das SDK-Manager-Objekt (MobileSyncSDKManager) initialisiert.
- Es wird optionaler, kommentierter Code bereitgestellt, den Sie neu instanziieren können, um Ihre Anwendung als Salesforce-Identitätsanbieter zu nutzen.
- Es wird optionaler, kommentierter Code bereitgestellt, den Sie neu instanziieren können, um Push-Benachrichtigungen zu unterstützen.
- Wählen Sie auf dem Willkommensbildschirm in Android Studio die Option Import project (Eclipse ADT, Gradle, etc.) (Projekt importieren). Falls Android Studio bereits geöffnet ist, klicken Sie auf (Datei > Öffnen)
- Wechseln Sie zum Zielverzeichnis, das Sie in der forcedroid-Befehlszeile angegeben haben, und wählen Sie dieses aus. (Tipp: Sofern Sie sich an die Regeln gehalten haben, lautet das Zielverzeichnis "TrailAndroidApps".)
- Klicken Sie auf Wählen.
- Wenn das Bearbeitungsfenster in Android Studio angezeigt wird, öffnen Sie die Projektansicht: (Ansicht > Werkzeugfenster > Projekt).
- Erweitern Sie im Fenster "Project" und doppelklicken Sie dann auf MainApplication.
Die Klasse MainApplication ist ziemlich einfach. Sie definiert eine Überschreibung einer Single-Base-Klassenmethode, onCreate(). Was macht die Überschreibung? Sie ruft die OnCreate()-Methode der übergeordneten Klasse auf und initialisiert dann das Singleton-Objekt 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); } }
- Einen Anwendungskontext, damit es weiß, wo es die Konfiguration Ihrer Anwendung findet.
- Einen Verweis auf die Hauptaktivitätsklasse (MainActivity.class), der am Ende des Anmelde-Flows von MobileSyncSDKManager verwendet wird, um die benutzerdefinierte Logik Ihrer Anwendung in Gang zu setzen.
Die Main Activity-Klasse
Glücklicherweis ist forcedroid intelligent genug, Ihre MainActivity-Klasse dazu zu bringen, SalesforceActivity zu erweitern. Dieses kleine Glück bedeutet, dass Sie viele abgefahrene Dinge gratis bekommen. So verarbeitet z. B. SalesforceActivity automatisch Ereignisse zum Anhalten und Fortsetzen, einschließlich aller erforderlichen Neueingaben des Zugangscodes. Wenn Sie stattdessen die eine oder andere nicht auf Salesforce-Aktivitäten basierende Klasse verwendet hätten (keine unzulässige Strategie, aber auch nicht empfehlenswert), würden Sie diesen Code selber schreiben. Sie können so viele Aktivitätsklassen definieren wie Ihre Anwendung erfordert. Es ist jedoch ratsam, für jede Aktivität eine Mobile SDK-Basisklasse wie SalesforceActivity oder SalesforceListActivity zu erweitern.
Die MainActivity-Klasse ist meistens damit beschäftigt, eine REST-Abfrage an Salesforce zu senden und dann die Antwort zu verarbeiten. Sie nutzt die Datensätze, die sie von Salesforce erhält, um eine Listenansicht aufzufüllen. Außerdem bietet sie zwei Schaltflächen, über die der Benutzer wahlweise Accounts oder Kontakte abfragen kann, sowie eine Schaltfläche zum Löschen der Datensatzanzeige und eine weitere zum Abmelden.
- Erweitern Sie im Android Studio Project-Fenster und doppelklicken Sie dann auf main.xml.
- Wählen Sie die Registerkarte Text am unteren Rand des Editorfensters.
<include layout="@layout/header" />
Das App-Manifest
- Erweitern Sie in Android Studio im Fenster "Project" .
- Doppelklicken Sie auf 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" ...
Außerdem erhält hier jede Aktivität, die Sie oder forcedroid definieren, eine Beschreibung. Beispielsweise stellt allein der Knoten application/activity in diesem Fall die erste Aktivität dar, die nach der Anmeldung erscheint. Wie Sie sehen, verweist die Eigenschaft android:name der Aktivität auf den Klassennamen Ihrer Hauptaktivität. Hier ist das XML-Fragment application/activity aus einer Datei AndroidManifest.xml in 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>
Alles andere, was Sie in der Standard-Manifestdatei sehen, gehört zur Android-Standardkonfiguration. Wie bei jeder Android-Anwendung können Sie dem Knoten <application> die eigenen Komponenten Ihrer Anwendung, wie beispielsweise benutzerdefinierte Aktivitäten, Services und Empfänger, hinzufügen.
Sie haben nun gelernt, wie es im Inneren einer forcedroid-Anwendung aussieht. Kommen wir also zu der Info, auf die Sie gewartet haben: nämlich, wie Sie auf die Salesforce-Daten zugreifen.