Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
laboratoare:laborator08 [2015/04/27 16:07]
Andrei Roșu-Cojocaru
laboratoare:laborator08 [2015/04/27 23:39] (current)
Andrei Roșu-Cojocaru
Line 72: Line 72:
   * Se identifică **numărul de proiect** care va fi utilizat de dispozitivul mobil pentru a se înregistra la serverul Google Cloud Messaging for Android (''​SENDER_ID''​),​ acesta putând fi preluat din:   * Se identifică **numărul de proiect** care va fi utilizat de dispozitivul mobil pentru a se înregistra la serverul Google Cloud Messaging for Android (''​SENDER_ID''​),​ acesta putând fi preluat din:
     * bara de adrese a aplicației de navigare {{ :​laboratoare:​laborator08:​project_number01.png?​nolink }}     * bara de adrese a aplicației de navigare {{ :​laboratoare:​laborator08:​project_number01.png?​nolink }}
-    * secțiunea //​Overview//​ a consolei Google API {{ :​laboratoare:​laborator08:​project_number02.png?​nolink&​1200 }}+    * secțiunea //​Overview//​ a consolei Google API {{ :​laboratoare:​laborator08:​project_number02.png?​nolink&​1000 }}
   * Se activează API-ul //Cloud Messaging for Android// din secțiunea //Mobile APIs//, ce poate fi accesată din //APIs & auth// → //APIs// a consolei Google API.   * Se activează API-ul //Cloud Messaging for Android// din secțiunea //Mobile APIs//, ce poate fi accesată din //APIs & auth// → //APIs// a consolei Google API.
  
Line 92: Line 92:
 **2.** Se instalează SDK-ul Google Play Services, necesară autentificării / deautentificării la Google Cloud Messaging for Android din cadrul aplicației instalată pe dispozitivul mobil. **2.** Se instalează SDK-ul Google Play Services, necesară autentificării / deautentificării la Google Cloud Messaging for Android din cadrul aplicației instalată pe dispozitivul mobil.
   * În Eclipse Luna, se accesează //Android SDK Manager//   * În Eclipse Luna, se accesează //Android SDK Manager//
-    * din bara de unelte\\ {{ :​laboratoare:​laborator08:​eclipse_toolbar.png?​nolink }}+    * din bara de unelte\\ {{ :​laboratoare:​laborator08:​eclipse_toolbar.png?​nolink&​900 ​}}
     * din meniul principal, //Window// → //Android SDK Manager//     * din meniul principal, //Window// → //Android SDK Manager//
-  * Se selectează următoarele pachete:\\ {{ :​laboratoare:​laborator08:​android_sdk_manager.png?​nolink }}+  * Se selectează următoarele pachete:\\ {{ :​laboratoare:​laborator08:​android_sdk_manager.png?​nolink&​600 ​}}
     * din secțiunea ''​Android 4.1.2 (API 16)'',​ pachetul ''​Google APIs''​     * din secțiunea ''​Android 4.1.2 (API 16)'',​ pachetul ''​Google APIs''​
     * din sețiunea //Extras//, pachetul //Google Play Services//     * din sețiunea //Extras//, pachetul //Google Play Services//
Line 104: Line 104:
  
   * **AVD**   * **AVD**
-    * se creează un dispozitiv virtual pentru care va specifica la secțiunea //Target// valoarea //Google APIs (Google Inc.)//\\ {{ :​laboratoare:​laborator08:​android_virtual_device01.png?​nolink }}+    * se creează un dispozitiv virtual pentru care va specifica la secțiunea //Target// valoarea //Google APIs (Google Inc.)//\\ {{ :​laboratoare:​laborator08:​android_virtual_device01.png?​nolink&​400 ​}}
     * se asociază datele unui cont Google (nume de utilizator, parola) din //​Settings//​ → //​Accounts//,​ selectându-se opțiunea //Add account//\\ {{ :​laboratoare:​laborator08:​android_virtual_device02.png?​nolink }}     * se asociază datele unui cont Google (nume de utilizator, parola) din //​Settings//​ → //​Accounts//,​ selectându-se opțiunea //Add account//\\ {{ :​laboratoare:​laborator08:​android_virtual_device02.png?​nolink }}
   * **Genymotion** - vor trebui instalate manual ''​ARM Transalation''​ și ''​Google Apps for Android''​ întrucât suportul pentru acestea nu mai este asigurat începând cu versiunea 2.0   * **Genymotion** - vor trebui instalate manual ''​ARM Transalation''​ și ''​Google Apps for Android''​ întrucât suportul pentru acestea nu mai este asigurat începând cu versiunea 2.0
-    * în //​Settings//​ → //ADB// → //ADB Connection Settings// se indică locația unde se găsește instalat SDK-ul de Android\\ {{ :​laboratoare:​laborator08:​genymotion_settings.png?​nolink }}+    * în //​Settings//​ → //ADB// → //ADB Connection Settings// se indică locația unde se găsește instalat SDK-ul de Android\\ {{ :​laboratoare:​laborator08:​genymotion_settings.png?​nolink&​400 ​}}
     * se instalează [[http://​pdsd2014.andreirosucojocaru.ro/​Genymotion-ARM-Translation_v1.1.zip|ARM Translation 1.1]] printr-o operație de tip drag-and-drop în ecranul principal al emulatorului     * se instalează [[http://​pdsd2014.andreirosucojocaru.ro/​Genymotion-ARM-Translation_v1.1.zip|ARM Translation 1.1]] printr-o operație de tip drag-and-drop în ecranul principal al emulatorului
       * se afișează o fereastră de dialog ce va conține mesajul ''​File transfer in progress...''​\\ {{ :​laboratoare:​laborator08:​file_transfer_in_progress.png?​nolink }}       * se afișează o fereastră de dialog ce va conține mesajul ''​File transfer in progress...''​\\ {{ :​laboratoare:​laborator08:​file_transfer_in_progress.png?​nolink }}
Line 119: Line 119:
       * [[http://​pdsd2014.andreirosucojocaru.ro/​gapps-jb-20121011-signed.zip|Google Apps for Android 4.1]]       * [[http://​pdsd2014.andreirosucojocaru.ro/​gapps-jb-20121011-signed.zip|Google Apps for Android 4.1]]
     * indiferent de rezultat, se repornește emulatorul prin comanda\\ <​code>​adb -s 192.168.56.101:​5555 reboot</​code>​ (respectiv ''​adb reboot''​)     * indiferent de rezultat, se repornește emulatorul prin comanda\\ <​code>​adb -s 192.168.56.101:​5555 reboot</​code>​ (respectiv ''​adb reboot''​)
-    * se asociază datele unui cont Google (nume de utilizator, parola) din //​Settings//​ → //​Accounts//,​ selectându-se opțiunea //Add account//\\ {{ :​laboratoare:​laborator08:​google_account_setup01.png?​nolink }}\\ {{ :​laboratoare:​laborator08:​google_account_setup02.png?​nolink }}\\ {{ :​laboratoare:​laborator08:​google_account_setup03.png?​nolink }}\\ {{ :​laboratoare:​laborator08:​google_account_setup04.png?​nolink }}\\ {{ :​laboratoare:​laborator08:​google_account_setup05.png?​nolink }}\\ {{ :​laboratoare:​laborator08:​google_account_setup06.png?​nolink }}\\ {{ :​laboratoare:​laborator08:​google_account_setup07.png?​nolink }}\\ {{ :​laboratoare:​laborator08:​google_account_setup08.png?​nolink }}\\ {{ :​laboratoare:​laborator08:​google_account_setup09.png?​nolink }}  +    * se asociază datele unui cont Google (nume de utilizator, parola) din //​Settings//​ → //​Accounts//,​ selectându-se opțiunea //Add account//\\ {{ :​laboratoare:​laborator08:​google_account_setup01.png?​nolink&​400 ​}}\\ {{ :​laboratoare:​laborator08:​google_account_setup02.png?​nolink&​400 ​}}\\ {{ :​laboratoare:​laborator08:​google_account_setup03.png?​nolink&​400 ​}}\\ {{ :​laboratoare:​laborator08:​google_account_setup04.png?​nolink&​400 ​}}\\ {{ :​laboratoare:​laborator08:​google_account_setup05.png?​nolink&​400 ​}}\\ {{ :​laboratoare:​laborator08:​google_account_setup06.png?​nolink&​400 ​}}\\ {{ :​laboratoare:​laborator08:​google_account_setup07.png?​nolink&​400 ​}}\\ {{ :​laboratoare:​laborator08:​google_account_setup08.png?​nolink&​400 ​}}\\ {{ :​laboratoare:​laborator08:​google_account_setup09.png?​nolink&​400 ​}}  
-    * se actualizează //Play Store// prin accesarea opțiunii //​Settings//​ de mai multe ori (procesul de actualizare va fi pornit în fundal, în mod automat)\\ {{ :​laboratoare:​laborator08:​google_account_setup10.png?​nolink }}+    * se actualizează //Play Store// prin accesarea opțiunii //​Settings//​ de mai multe ori (procesul de actualizare va fi pornit în fundal, în mod automat)\\ {{ :​laboratoare:​laborator08:​google_account_setup10.png?​nolink&​400 ​}}
  
 **4.** În situația în care se va folosi un server CCS (XMPP), în prezent, nu mai este necesară o înregistrare suplimentară pentru a se obține acceptul Google de a utiliza serviciul de transmitere a mesajelor de pe dispozitivul mobil. Anterior, o astfel de solicitare trebuia transmisă la [[https://​services.google.com/​fb/​forms/​gcm/​|Upstream Google Cloud Messaging and User Notifications Sign-up]]. **4.** În situația în care se va folosi un server CCS (XMPP), în prezent, nu mai este necesară o înregistrare suplimentară pentru a se obține acceptul Google de a utiliza serviciul de transmitere a mesajelor de pe dispozitivul mobil. Anterior, o astfel de solicitare trebuia transmisă la [[https://​services.google.com/​fb/​forms/​gcm/​|Upstream Google Cloud Messaging and User Notifications Sign-up]].
Line 131: Line 131:
  
 **6**. Se descarcă cea mai recentă versiune stabilă a mediului de dezvoltare Eclipse IDE for Java EE Developers (Windows: [[http://​www.eclipse.org/​downloads/​download.php?​file=/​technology/​epp/​downloads/​release/​luna/​SR2/​eclipse-jee-luna-SR2-win32.zip|32-bit]]|[[http://​www.eclipse.org/​downloads/​download.php?​file=/​technology/​epp/​downloads/​release/​luna/​SR2/​eclipse-jee-luna-SR2-win32-x86_64.zip|64-bit]],​ Linux: [[http://​www.eclipse.org/​downloads/​download.php?​file=/​technology/​epp/​downloads/​release/​luna/​SR2/​eclipse-jee-luna-SR2-linux-gtk.tar.gz|32-bit]]|[[http://​www.eclipse.org/​downloads/​download.php?​file=/​technology/​epp/​downloads/​release/​luna/​SR2/​eclipse-jee-luna-SR2-linux-gtk-x86_64.tar.gz|64-bit]]) și se integrează cu serverul web Apache Tomcat. **6**. Se descarcă cea mai recentă versiune stabilă a mediului de dezvoltare Eclipse IDE for Java EE Developers (Windows: [[http://​www.eclipse.org/​downloads/​download.php?​file=/​technology/​epp/​downloads/​release/​luna/​SR2/​eclipse-jee-luna-SR2-win32.zip|32-bit]]|[[http://​www.eclipse.org/​downloads/​download.php?​file=/​technology/​epp/​downloads/​release/​luna/​SR2/​eclipse-jee-luna-SR2-win32-x86_64.zip|64-bit]],​ Linux: [[http://​www.eclipse.org/​downloads/​download.php?​file=/​technology/​epp/​downloads/​release/​luna/​SR2/​eclipse-jee-luna-SR2-linux-gtk.tar.gz|32-bit]]|[[http://​www.eclipse.org/​downloads/​download.php?​file=/​technology/​epp/​downloads/​release/​luna/​SR2/​eclipse-jee-luna-SR2-linux-gtk-x86_64.tar.gz|64-bit]]) și se integrează cu serverul web Apache Tomcat.
-  * //Window// → //​Preferences//​ → //Server// → //Runtime Environments//​ și se accesează butonul //​Add...//​\\ {{ :​laboratoare:​laborator08:​server_configuration01.png?​nolink }} +  * //Window// → //​Preferences//​ → //Server// → //Runtime Environments//​ și se accesează butonul //​Add...//​\\ {{ :​laboratoare:​laborator08:​server_configuration01.png?​nolink&​500 ​}} 
-  * se specifică tipul serverului web (''​Apache Tomcat v8.0''​)\\ {{ :​laboratoare:​laborator08:​server_configuration02.png?​nolink }} +  * se specifică tipul serverului web (''​Apache Tomcat v8.0''​)\\ {{ :​laboratoare:​laborator08:​server_configuration02.png?​nolink&​500 ​}} 
-  * se precizează locația la care se găsește serverul web (directorul în care a fost dezarhivat, fără alte configurări) și versiunea de Java Runtime Environment\\ {{ :​laboratoare:​laborator08:​server_configuration03.png?​nolink }}+  * se precizează locația la care se găsește serverul web (directorul în care a fost dezarhivat, fără alte configurări) și versiunea de Java Runtime Environment\\ {{ :​laboratoare:​laborator08:​server_configuration03.png?​nolink&​500 ​}}
 <note tip>Se oferă și posibilitatea descărcării și instalării unei instanțe a serverului web Apache Tomcat, însă de regulă aceasta nu referă cea mai recentă versiune.</​note>​ <note tip>Se oferă și posibilitatea descărcării și instalării unei instanțe a serverului web Apache Tomcat, însă de regulă aceasta nu referă cea mai recentă versiune.</​note>​
  
-{{ :​laboratoare:​laborator08:​server_configuration04.png?​nolink }}+{{ :​laboratoare:​laborator08:​server_configuration04.png?​nolink&​500 ​}}
  
-  * //Window// → //Show View// → //​Other...//​ → //Servers// → //Server// și se accesează legătura //No servers are available. Click this link to create a new server...// sau click pe butonul drept al mouse-ului în spațiul de lucru //Server// → //New// → //​Server//​\\ {{ :​laboratoare:​laborator08:​server_configuration05.png?​nolink }}\\ {{ :​laboratoare:​laborator08:​server_configuration06.png?​nolink }} +  * //Window// → //Show View// → //​Other...//​ → //Servers// → //Server// și se accesează legătura //No servers are available. Click this link to create a new server...// sau click pe butonul drept al mouse-ului în spațiul de lucru //Server// → //New// → //​Server//​\\ {{ :​laboratoare:​laborator08:​server_configuration05.png?​nolink }}\\ {{ :​laboratoare:​laborator08:​server_configuration06.png?​nolink&​800 ​}} 
-  * se selectează serverul web definit anterior și se accesează butonul //​Finish//​\\ {{ :​laboratoare:​laborator08:​server_configuration07.png?​nolink }} +  * se selectează serverul web definit anterior și se accesează butonul //​Finish//​\\ {{ :​laboratoare:​laborator08:​server_configuration07.png?​nolink&​500 ​}} 
-  * se asociază proiectului un server web pe care va rula: click pe butonul drept al mouse-ului pe denumirea proiectului → //​Properties//​ → //Server// și se selectează serverul web definit anterior\\ {{ :​laboratoare:​laborator08:​server_configuration08.png?​nolink }}+  * se asociază proiectului un server web pe care va rula: click pe butonul drept al mouse-ului pe denumirea proiectului → //​Properties//​ → //Server// și se selectează serverul web definit anterior\\ {{ :​laboratoare:​laborator08:​server_configuration08.png?​nolink&​500 ​}}
   * se realizează o referință către biblioteca serverului web, aceasta fiind trecută în classpath: click pe butonul drept al mouse-ului pe denumirea proiectului → //Build Path// → //Add Library//   * se realizează o referință către biblioteca serverului web, aceasta fiind trecută în classpath: click pe butonul drept al mouse-ului pe denumirea proiectului → //Build Path// → //Add Library//
-    * se alege //Server Runtime//\\ {{ :​laboratoare:​laborator08:​server_configuration09.png?​nolink }} +    * se alege //Server Runtime//\\ {{ :​laboratoare:​laborator08:​server_configuration09.png?​nolink&​500 ​}} 
-    * se indică serverul web definit anterior și se accesează butonul ''​Finish''​\\ {{ :​laboratoare:​laborator08:​server_configuration10.png?​nolink }}+    * se indică serverul web definit anterior și se accesează butonul ''​Finish''​\\ {{ :​laboratoare:​laborator08:​server_configuration10.png?​nolink&​500 ​}}
  
 **7.** Se descarcă și se instalează cea mai recentă versiune stabilă a motorului pentru baze de date MySQL. **7.** Se descarcă și se instalează cea mai recentă versiune stabilă a motorului pentru baze de date MySQL.
Line 174: Line 174:
  
 Se realizează o referință către biblioteca pentru accesarea Google Cloud Messaging care este localizată în ''<​android-sdk>/​extras/​google/​google_play_services/​libproject/​google-play-services_lib''​ Se realizează o referință către biblioteca pentru accesarea Google Cloud Messaging care este localizată în ''<​android-sdk>/​extras/​google/​google_play_services/​libproject/​google-play-services_lib''​
-  * se accesează //File// → //Import// → //Android// → //Existing Android Code Into Workspace//​\\ {{ :​laboratoare:​laborator08:​google_cloud_messaging_library_import01.png?​nolink }} +  * se accesează //File// → //Import// → //Android// → //Existing Android Code Into Workspace//​\\ {{ :​laboratoare:​laborator08:​google_cloud_messaging_library_import01.png?​nolink&​500 ​}} 
-  * se indică locația unde se găsește instalată biblioteca pentru accesarea Google Cloud Messaging, creându-se o copie a acestuia în spațiul de lucru (se bifează opțiunea //Copy projects into workspace//​)\\ {{ :​laboratoare:​laborator08:​google_cloud_messaging_library_import02.png?​nolink }} +  * se indică locația unde se găsește instalată biblioteca pentru accesarea Google Cloud Messaging, creându-se o copie a acestuia în spațiul de lucru (se bifează opțiunea //Copy projects into workspace//​)\\ {{ :​laboratoare:​laborator08:​google_cloud_messaging_library_import02.png?​nolink&​800 ​}} 
-  * în fereastra corespunzătoare proiectului aferent aplicației Android (click dreapta pe denumirea proiectului în //Package Explorer// → //​Properties//​),​ se accesează opțiunea //Android// și se specifică referința către biblioteca respectivă în secțiunea //Library// (accesând butonul //Add//)\\ {{ :​laboratoare:​laborator08:​google_cloud_messaging_library_import03.png?​nolink }}+  * în fereastra corespunzătoare proiectului aferent aplicației Android (click dreapta pe denumirea proiectului în //Package Explorer// → //​Properties//​),​ se accesează opțiunea //Android// și se specifică referința către biblioteca respectivă în secțiunea //Library// (accesând butonul //Add//)\\ {{ :​laboratoare:​laborator08:​google_cloud_messaging_library_import03.png?​nolink&​800 ​}}
  
 ==== Structura Proiectului ==== ==== Structura Proiectului ====
Line 188: Line 188:
   - (opțional) un **serviciu** (''​GoogleCloudMessagingIntentService''​) lansat în execuție în momentul în care este livrat mesajul (de către ascultător) în cadrul căruia acesta este procesat propriu-zis;​ utilizarea unui serviciu este necesară doar în situația în care prelucrarea mesajului se realizează într-un interval de timp mai mare, fiind necesar să se asigure faptul că dispozitivul mobil nu devine inactiv între timp.   - (opțional) un **serviciu** (''​GoogleCloudMessagingIntentService''​) lansat în execuție în momentul în care este livrat mesajul (de către ascultător) în cadrul căruia acesta este procesat propriu-zis;​ utilizarea unui serviciu este necesară doar în situația în care prelucrarea mesajului se realizează într-un interval de timp mai mare, fiind necesar să se asigure faptul că dispozitivul mobil nu devine inactiv între timp.
  
-{{ :​laboratoare:​laborator08:​package_explorer.png?​nolink }}+{{ :​laboratoare:​laborator08:​package_explorer.png?​nolink&​500 ​}}
  
 === Activitatea GoogleCloudMessagingActivity === === Activitatea GoogleCloudMessagingActivity ===
Line 874: Line 874:
  
 <​note>​În cazul în care nu dispuneți de un cont Google, acesta va trebui creat înainte de a implementa aceste cerințe.</​note>​ <​note>​În cazul în care nu dispuneți de un cont Google, acesta va trebui creat înainte de a implementa aceste cerințe.</​note>​
 +
 +<note important>​Aceste valori nu vor fi utilizate decât împreună, altfel se vor genera erori de tipul ''​MismatchSenderId''​.</​note>​
  
 ==== Clientul Android ==== ==== Clientul Android ====
Line 898: Line 900:
   * în cazul în care se utilizează un emulator, se configurează astfel încât acesta să aibă instalat Google Play Services;   * în cazul în care se utilizează un emulator, se configurează astfel încât acesta să aibă instalat Google Play Services;
   * în cazul în care se utilizează un dispozitiv fizic, acesta trebuie să ruleze un sistem de operare Android cu o versiune ulterioară 2.2, având asociat un cont Google.   * în cazul în care se utilizează un dispozitiv fizic, acesta trebuie să ruleze un sistem de operare Android cu o versiune ulterioară 2.2, având asociat un cont Google.
 +
 +<​note>​În situația în care nu se reușește configurarea unui dispozitiv virtual, se poate folosi [[http://​pdsd2015.andreirosucojocaru.ro/​resources/​Genymobile.tar.gz|o imagine Nexus S (API 16)]] care trebuie plasată în directorul ''​$HOME''​.</​note>​
  
 Mai multe detalii pot fi obținute în secțiunea [[:​laboratoare:​laborator08#​configurare_client|Configurare client]] Mai multe detalii pot fi obținute în secțiunea [[:​laboratoare:​laborator08#​configurare_client|Configurare client]]
  
-**6.** În interfața ''​ro.pub.cs.systems.pdsd.lab08.googlecloudmessaging.general.Constants'',​ trebuie modificate următoarele valori:+**6.** În interfața ''​ro.pub.cs.systems.pdsd.lab08.googlecloudmessaging.general.Constants'',​ trebuie modificate următoarele valori, __**numai în situația în care se folosește un server web Apache Tomcat**__:
   * ''​PROJECT_NUMBER''​ - cu numărul de proiect generat de consola Google API;   * ''​PROJECT_NUMBER''​ - cu numărul de proiect generat de consola Google API;
-  * în situația în care se folosește un server de aplicații Apache Tomcat, adresa ​Internet pentru serviciile care expun funcționalități către dispozitivul mobil:+  * adresele ​Internet pentru serviciile care expun funcționalități către dispozitivul mobil:
     * dispozitiv mobil - adresa Internet indicată ca default gateway a rețelei de calculatoare din care fac parte dispozitivul mobil și mașina pe care se găsește serverul de aplicații;     * dispozitiv mobil - adresa Internet indicată ca default gateway a rețelei de calculatoare din care fac parte dispozitivul mobil și mașina pe care se găsește serverul de aplicații;
     * AVD - 10.0.2.1;     * AVD - 10.0.2.1;
Line 969: Line 973:
 | ''​Constants.TIMESTAMP''​ | ''​String''​ | momentul de timp la care a fost realizată înregistrarea | | ''​Constants.TIMESTAMP''​ | ''​String''​ | momentul de timp la care a fost realizată înregistrarea |
  
-**b)** ​+**b)** ​Pe firul de execuție ''​MessagePushExecutor''​ din fragmentul ''​RegisteredFragment'',​ să se transmită o cerere HTTP de tip POST către către componenta din serverul de aplicații, responsbilă cu transmiterea unui mesaj sub forma unei notificări (disponibilă la ''​Constants.MESSAGE_PUSH_SERVICE_ADDRESS''​). 
 + 
 +Aceasta va conține următorii parametrii (instanțiați ca membrii ai clasei): 
 +  * ''​Constants.REGISTRATION_ID''​ - identificatorul de înregistrare furnizat de serverul Google Cloud Messaging;​ 
 +  * ''​Constants.MESSAGE''​ - mesajul propriu-zis care se dorește a fi transmis. 
 + 
 +Codificarea utilizată pentru această comunicație este UTF-8. 
 + 
 +În această situație, nu este necesară prelucrarea rezultatului obținut. 
 + 
 +**9.** În momentul în care este transmis un mesaj de către expeditor, să se observe notificarea destinatarului și activitatea în care pot fi vizualizați parametrii pachetului furnizat de serverul Google Cloud Messaging. 
 + 
 +{{ :​laboratoare:​laborator08:​mobile_device_application04.png?​nolink&​400 }} 
 + 
 +**10.** ​ Să se încarce modificările realizate în cadrul depozitului '​Laborator08-Client'​ de pe contul Github personal, folosind un mesaj sugestiv. <​code>​ 
 +student@pdsd2015:​~/​Laborator08-Client$ git add * 
 +student@pdsd2015:​~/​Laborator08-Client$ git commit -m "​implemented taks for laboratory 08-Client"​ 
 +student@pdsd2015:​~/​Laborator08-Client$ git push Laborator08-Client_perfectstudent master 
 +</​code>​
  
 ==== Serverul de Aplicații (Opțional) ==== ==== Serverul de Aplicații (Opțional) ====
Line 975: Line 997:
 <note tip>​Informații referitoare la configurarea serverului de aplicații pot fi obținute la [[:​laboratoare:​laborator08#​configurare_server_optional|Configurare Server]].</​note>​ <note tip>​Informații referitoare la configurarea serverului de aplicații pot fi obținute la [[:​laboratoare:​laborator08#​configurare_server_optional|Configurare Server]].</​note>​
  
-**6.** Să se descarce cea mai recentă versiune stabilă a serverului ​web Apache Tomcat și să se dezarhiveze.+Funcționalitatea corespunzătoare serverului de aplicații este disponibilă în două variante: 
 +  ​* PHP & MySQL, găzduită la o adresă Internet publică; 
 +  * JavaServlets / JSP & MySQL (folosind un server ​web Apache Tomcat ​8.0.21 - integrat în structura proiectului,​ fără a necesita configurare),​ care poate fi rulat pe mașina fizică (local), comunicând cu dispozitivul mobil numai în situația în care acestea se găsesc în aceeași rețea și portul 8080 nu este blocat - de aceea, toate operațiile de configurare ce urmează se referă la această aplicație.
  
-**7.** Să se descarce cea mai recentă versiune stabilă a mediului de dezvoltare Eclipse IDE for Java EE Developers, integrându-se cu serverul web Apache Tomcat.+Pe serverul de aplicații sunt disponibile următoarele funcționalități,​ în cadrul unor componente diferite: 
 +  ​* înregistrarea unui dispozitiv mobil în cadrul unei baze de date locale, pe baza unui identificator de înregistrare furnizat de serverul Google Cloud Messaging;​ 
 +  ​* listarea tuturor dispozitivelor mobile înregistrate sub forma unui document JSON; 
 +  ​* transmiterea unui mesaj sub forma unui notificări către un dispozitiv mobil, prin intermediul serverului Google Cloud Messaging.
  
-**8.** Să se instaleze motorul pentru gestiunea bazelor de date MySQL și să se ruleze script-ul ''​Laborator09.sql'' ​din cadrul proiectului ​''​GoogleCloudMessagingWebServer'' ​care creează o bază de date cu o tabelă în care vor fi stocate informațiile referitoare la identificatorii de înregistrare transmiși de clienții Android.+**11.** În contul Github personal, ​să se creeze un depozit denumit '​Laborator08-Server'. Inițial, acesta trebuie să fie gol (nu trebuie să bifați nici adăugarea unui fișier ​''​README.md''​, nici a fișierului ​''​.gitignore'' ​sau a a fișierului ''​LICENSE''​).
  
-<code sql>+**12.** Să se cloneze în directorul de pe discul local conținutul depozitului la distanță de la [[https://​www.github.com/​pdsd2015/​Laborator08-Server|]].  
 + 
 +În urma acestei operații, directorul Laborator08-Server va trebui să se conțină directoarele ''​PHP''​ și ''​ServletsJSP''​.  
 + 
 +<code> 
 +student@pdsd2015:​~$ git clone https://​www.github.com/​pdsd2015/​Laborator08-Server 
 +</​code>​ 
 + 
 +**13.** Să se încarce conținutul descărcat în cadrul depozitului '​Laborator08-Server'​ de pe contul Github personal. <​code>​ 
 +student@pdsd2015:​~$ cd Laborator08-Server 
 +student@pdsd2015:​~/​Laborator08-Server$ git remote add Laborator08-Server_perfectstudent https://​github.com/​perfectstudent/​Laborator08-Server 
 +student@pdsd2015:​~/​Laborator08-Server$ git push Laborator08-Server_perfectstudent master 
 +</​code>​ 
 + 
 +**14.** Să se descarce cea mai recentă versiune stabilă a mediului de dezvoltare Eclipse IDE for Java EE Developers, integrându-se cu serverul web Apache Tomcat. 
 + 
 +**15.** Să se instaleze motorul pentru gestiunea bazelor de date MySQL și să se ruleze script-ul ''​googlecloudmessaging.sql''​ din cadrul directorului ''​ServletsJSP''​ care creează o bază de date cu o tabelă în care vor fi stocate informațiile referitoare la identificatorii de înregistrare transmiși de clienții Android. 
 + 
 +<code>
 CREATE DATABASE googlecloudmessaging;​ CREATE DATABASE googlecloudmessaging;​
  
Line 987: Line 1032:
  
 CREATE TABLE registered_devices ( CREATE TABLE registered_devices (
- id              INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL, +  ​id              INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL, 
- registration_id TEXT NOT NULL, +  registration_id TEXT NOT NULL, 
- username ​       VARCHAR(255),​  +  username ​       VARCHAR(255),​  
- email         ​VARCHAR(255),​ +  email           ​VARCHAR(255),​ 
- creation_time ​  TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP+  ​timestamp ​      TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
 ); );
 </​code>​ </​code>​
Line 997: Line 1042:
 Rularea acestuia se poate realiza folosind una dintre următoarele variante, presupunând că vă aflați în directorul în care se găsește acest fișier: Rularea acestuia se poate realiza folosind una dintre următoarele variante, presupunând că vă aflați în directorul în care se găsește acest fișier:
   - <​code>​   - <​code>​
-mysql -u root -p <Laborator09.sql+student@pdsd2015:​~/​Laborator08-Server/​JSPServlets$ ​mysql -u root -p <googlecloudmessaging.sql
 </​code>​ </​code>​
   - <​code>​   - <​code>​
-mysql -u root -p+student@pdsd2015:​~/​Laborator08-Server/​JSPServlets$ ​mysql -u root -p
 Enter password: Enter password:
 </​code>​ </​code>​
     - <​code>​     - <​code>​
-mysql> source ​Laborator09.sql;+mysql> source ​googlecloudmessaging.sql;
 </​code>​ sau </​code>​ sau
     - <​code>​     - <​code>​
-mysql> \. Laborator09.sql;+mysql> \. googlecloudmessaging.sql;
 </​code>​ </​code>​
  
-**9.** În mediul de dezvoltare Eclipse IDE for Java EE Developers ​să se deschidă proiectul ''​GoogleCloudMessaging''​.+**16.** Să se importe proiectul ''​GoogleCloudMessagingServer''​ în mediul de dezvoltare Eclipse IDE for Java EE Developers.
  
-**10.** În interfața ''​general.Constants'',​ trebuie modificate următoarele valori: ​+**17.** În interfața ''​Constants''​ din pachetul ''​ro.pub.cs.systems.pdsd.lab08.googlecloudmessaging.general'',​ trebuie modificate următoarele valori: ​
   * ''​DATABASE_PASSWORD''​ - parola de administrare a motorului pentru gestiunea bazei de date MySQL, care a fost introdusă la instalarea acestui produs;   * ''​DATABASE_PASSWORD''​ - parola de administrare a motorului pentru gestiunea bazei de date MySQL, care a fost introdusă la instalarea acestui produs;
   * ''​API_KEY''​ - cheia publică de acces a serverului Google Cloud Messaging de către serverul de aplicații, așa cum a fost generată de Consola Google API.   * ''​API_KEY''​ - cheia publică de acces a serverului Google Cloud Messaging de către serverul de aplicații, așa cum a fost generată de Consola Google API.
  
-=====  ===== +**18.** În acest moment, se poate realiza comunicația client Android ↔ server de aplicații prin intermediul serviciului Google Cloud Messaging:​ 
- +  * clientul Android trimite identificatorul de înregistrare către serverul de aplicații;​ 
-**11.** În acest moment, se poate realiza comunicația client Android ↔ server de aplicații prin intermediul serviciului Google Cloud Messaging:​ +  * se accesează ​componenta pentru transmiterea unui mesaj prin intermediul unei notificări în aplicația curentă ​de navigare (//eng.// browser)\\ {{ pdsd:​laboratoare:​laborator08:​message_push.png?nolink&​800 ​}} 
-  * clientul Android trimite identificatorul de înregistrare către serverul de aplicații;\\ {{ :​laboratoare:​lab09-mobiledeviceunregistered.jpg?​nolink }}\\ {{ :​laboratoare:​lab09-mobiledeviceregistered.jpg?​nolink }} +    * PHP: http://​pdsd2015.andreirosucojocaru.ro/​exemple/​laboratoare/​laborator08/​googlecloudmessaging/​message_push.php;​ 
-  * se accesează ​servletul ''​GoogleCloudMessagingRegisterServlet'' ​prin intermediul unei aplicații de navigare (//eng.// browser) ​pentru a se transmite un mesaj către dispozitivul mobil, acesta fiind afișat sub forma unei notificări.\\ {{ :​laboratoare:​lab09-GoogleCloudMessagingWebServer.jpg?nolink }}+    * JavaServlets / JSP (local): http://​192.168.56.1:​8080/​GoogleCloudMessagingServer/​MessagePushServlet.
  
 ===== Resurse Utile ===== ===== Resurse Utile =====
-{{:​laboratoare:​client.zip|Surse Client}}\\ ​ 
-{{:​laboratoare:​server.zip|Surse Server}} 
- 
 [[http://​tomcat.apache.org/​download-70.cgi|Apache Tomcat 7 Downloads]]\\ ​ [[http://​tomcat.apache.org/​download-70.cgi|Apache Tomcat 7 Downloads]]\\ ​
 [[http://​www.eclipse.org/​downloads/​packages/​eclipse-ide-java-ee-developers/​keplersr2|Eclipse IDE for Java EE Developers]]\\ [[http://​www.eclipse.org/​downloads/​packages/​eclipse-ide-java-ee-developers/​keplersr2|Eclipse IDE for Java EE Developers]]\\
Line 1034: Line 1076:
 [[http://​developer.android.com/​reference/​com/​google/​android/​gms/​gcm/​GoogleCloudMessaging.html|Google Cloud Messaging API]]\\ ​ [[http://​developer.android.com/​reference/​com/​google/​android/​gms/​gcm/​GoogleCloudMessaging.html|Google Cloud Messaging API]]\\ ​
 [[http://​stackoverflow.com/​questions/​20121883/​how-to-install-google-play-services-in-a-genymotion-vm-with-no-drag-and-drop-su|How to install Google Play Services in a Genymotion VM (with no drag and drop support)?​]]\\ ​ [[http://​stackoverflow.com/​questions/​20121883/​how-to-install-google-play-services-in-a-genymotion-vm-with-no-drag-and-drop-su|How to install Google Play Services in a Genymotion VM (with no drag and drop support)?​]]\\ ​
-[[http://​wiki.cyanogenmod.org/​w/​Google_Apps|Google Apps]]\\  +[[http://​forum.xda-developers.com/​showthread.php?​t=2528952|Installing ARM Translation and GApps]]\\  
-[[http://​forum.xda-developers.com/​showthread.php?​t=2528952|Installing ARM Translation and GApps]]+[[http://​developer.android.com/​guide/​topics/​ui/​notifiers/​notifications.html|Android Notifications]]
laboratoare/laborator08.1430140020.txt.gz · Last modified: 2015/04/27 16:07 by Andrei Roșu-Cojocaru
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0