Autore Topic: Notifiche push  (Letto 2846 volte)

Offline titanum

  • Nuovo arrivato
  • *
  • Post: 47
  • Respect: 0
    • Mostra profilo
Notifiche push
« il: 14 Maggio 2012, 17:56:18 CEST »
0
Ciao ragazzi, mi sto interessando alle notifiche push e alla libreria C2DM che permette di implementarle. Ho trovato un tutorial a questo link

https://developers.google.com/android/c2dm/#intro

ma ad un certo punto fa riferimento ad un metodo startService che non descrive da nessuna parte, né dice come implementarlo.

Sapete dirmi come si fa?

Grazie

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Notifiche push
« Risposta #1 il: 14 Maggio 2012, 18:56:40 CEST »
0
Ciao ragazzi, mi sto interessando alle notifiche push e alla libreria C2DM che permette di implementarle. Ho trovato un tutorial a questo link

https://developers.google.com/android/c2dm/#intro

ma ad un certo punto fa riferimento ad un metodo startService che non descrive da nessuna parte, né dice come implementarlo.

Sapete dirmi come si fa?

Grazie

E' il normalissimo metodo startService della classe Context, non devi definirlo tu ;)

Offline titanum

  • Nuovo arrivato
  • *
  • Post: 47
  • Respect: 0
    • Mostra profilo
Re:Notifiche push
« Risposta #2 il: 15 Maggio 2012, 09:25:37 CEST »
0
Però eclipse mi da errore, mi dice:

The method startService(Intent) is undefined for the type PushController (la mia classe che gestisce le push). Ovviamente ho importato la classe  android.content.Context e le altre.

Offline JJ

  • Nuovo arrivato
  • *
  • Post: 28
  • Immigrato in Francia...
  • Respect: +1
    • Google+
    • opengeek_blog
    • Mostra profilo
    • OpenGeek
  • Dispositivo Android:
    Nexus 4, Nexus 5, Nexus 7
  • Play Store ID:
    Purple Soc. Coop.
  • Sistema operativo:
    Windows 10
Re:Notifiche push
« Risposta #3 il: 15 Maggio 2012, 10:11:13 CEST »
0
Ciao,
Forse hai dimenticato di dichiarare l'intent-filter nel file manifest...
Mi trovate anche su www.opengeek.it !
Comics Checklist: scopri tutte le uscite dei fumetti in italiano! http://goo.gl/TF6CTn

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:Notifiche push
« Risposta #4 il: 15 Maggio 2012, 10:11:24 CEST »
0
Ok che hai importato la classe COntext, ma stai usando una sua istanza?  :-)
Dal messaggio di errore pare quasi tu scriva una cosa del genere: pushCOntroller.startService(intent), invece di context.startService(intent).

Offline titanum

  • Nuovo arrivato
  • *
  • Post: 47
  • Respect: 0
    • Mostra profilo
Re:Notifiche push
« Risposta #5 il: 15 Maggio 2012, 11:05:17 CEST »
0
È vero... così non da errore, ma è corretto? Non ho capito come mai nel tutorial non era specificato context.startService(), anche il metodo getBroadcast aveva come parametro un this che faceva riferimento a PushController e ho dovuto sostituire con la variabile context.

Grazie per il vostro aiuto :)

Codice: [Seleziona]
public class PushController {
        private Context context; //deve essere inizializzata in qualche modo?
       
        public PushController () {
       
        }

public void register(){
            Intent registrationIntent = new Intent("com.google.android.c2dm.intent.REGISTER");
            registrationIntent.putExtra("app", PendingIntent.getBroadcast(context, 0, new Intent(), 0)); // boilerplate
            registrationIntent.putExtra("sender", "emailOfSender");
            context.startService(registrationIntent);
    }

    //altri metodi che si trovano nel tutorial
}
« Ultima modifica: 15 Maggio 2012, 11:18:15 CEST da titanum »

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:Notifiche push
« Risposta #6 il: 15 Maggio 2012, 11:20:20 CEST »
0
Ho dato un'occhiata al tutorial...probabilmente il codice d'esempio è da intendersi come facente parte di una Activity, o comunque da una classe che allo stesso modo eredita da Context. Te ne accorgi proprio perchè nel codice si passa "this" quando si ha necessità di un Context (nel getBroadcast per esempio).

Offline titanum

  • Nuovo arrivato
  • *
  • Post: 47
  • Respect: 0
    • Mostra profilo
Re:Notifiche push
« Risposta #7 il: 16 Maggio 2012, 11:00:24 CEST »
0
Ciao ragazzi, ho trovato quest'altro tutorial:

Android Cloud to Device Messaging (C2DM) - Tutorial

Il metodo startService non da errore, quindi quel codice deve essere messo in una classe che estende Activity. Ho visto che devono essere fatte diverse classi che estendono Activity, io le ho copiate interamente con l'eccezione del package ma ci sono alcuni errori:

Nella classe C2DMRegistrationReceiver in questa riga:
      
Codice: [Seleziona]
Notification notification = new Notification(R.drawable.icon,"Registration successful", System.currentTimeMillis());
mi dice: icon cannot be resolved or is not a field

nel file androidmanifest.xml
Codice: [Seleziona]
    <application
        android:icon="@drawable/icon"
        android:label="@string/app_name" >
        <activity
        ....
mi dice :
               error: Error: No resource found that matches the given name (at 'icon' with value '@drawable/icon')

infine nella classe MessageReceivedActivity alla riga
      
Codice: [Seleziona]
setContentView(R.layout.activity_result);mi dice:
              ctivity_result cannot be resolved or is not a field

A cosa sono dovuti? Grazie ancora per l'aiuto

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:Notifiche push
« Risposta #8 il: 16 Maggio 2012, 11:02:59 CEST »
0
Al fatto che ti mancano le risorse che dichiari di avere (R.drawable.icon, R.layout.activity_result).

Offline titanum

  • Nuovo arrivato
  • *
  • Post: 47
  • Respect: 0
    • Mostra profilo
Re:Notifiche push
« Risposta #9 il: 16 Maggio 2012, 12:50:23 CEST »
0
nel tutorial fa creare un file chiamato activity_result.xml, è possibile che cerchi quel file? Se si dove va messo affinché android lo veda?

Offline titanum

  • Nuovo arrivato
  • *
  • Post: 47
  • Respect: 0
    • Mostra profilo
Re:Notifiche push
« Risposta #10 il: 18 Maggio 2012, 16:46:43 CEST »
0
Ho capito a cosa si riferiscono quei valori e il modo in cui android gestisce le variabili, ho risolto il problema di R.drawable.icon ma R.layout.activity_result resta: ho creato il file activity_result come indicato nell'ultimo tutorial che ho postato e l'ho messo in res/layout, ma questa riga continua a dare errore, dice:

activity_result cannot be resolved or is not a field

il file è nel posto giusto adesso, cosa devo fare?

Grazie

Offline titanum

  • Nuovo arrivato
  • *
  • Post: 47
  • Respect: 0
    • Mostra profilo
Re:Notifiche push
« Risposta #11 il: 21 Maggio 2012, 11:23:18 CEST »
0
Ho capito: era dovuto al fatto che ho importato una libreria che si chiama Android.R, quindi cercava la variabile altrove e non in res/layout. Togliendo quell'import l'errore è scomparso. Ora mi resta da capire come funziona il server, sempre nel tutorial di vogella ci sono due classi main ma non capisco quale lanciare. Qualcuno che magari ha provato questo tutorial sa dirmi come fare?

Offline titanum

  • Nuovo arrivato
  • *
  • Post: 47
  • Respect: 0
    • Mostra profilo
Re:Notifiche push
« Risposta #12 il: 28 Maggio 2012, 11:24:36 CEST »
0
Ciao ragazzi, alla fine dopo tanti tentativi sono riuscito a far funzionare le notifiche push, vi scrivo come ho fatto nel caso possa servirvi.
Ho trovato quest'altro articolo:

Power your mobile apps with android push notification (C2DM)

da quì si può scaricare un client e un server di esempio, bisogna semplicemente seguire le istruzioni e registrare un account per l'utilizzo di googele C2DM, specificando il package preciso dell'applicazione, altrimenti non funziona.