Autore Topic: Parse.com  (Letto 1073 volte)

Offline Nicolab1971

  • Utente junior
  • **
  • Post: 108
  • Respect: +2
    • Mostra profilo
Parse.com
« il: 01 Agosto 2014, 12:59:19 CEST »
0
Ho implementato in una appllicazione di test le notifiche di Parse.com, l'applicazione sembra funzionare, quando dal sito invio un messaggio l'app lo riceve alcune volte immediatamente altre a distanza di qualche minuto ma credo si anormale. Dando uno sugardo al log però mi sono accorto che  sono presenti questi che riporto sotto, metto anche il manifest perchè alcuni di essi fanno riferimento a quello.
Qualcuno può aiutarmi? Grazie

Codice (XML): [Seleziona]
08-01 11:51:10.202    2492-2492/it.nicolabrogelli.notifytest E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{it.nicolabrogelli.notifytest/it.nicolabrogelli.notifytest.starter.ParseStarterProjectActivity}: java.lang.RuntimeException: You must call Parse.initialize(context, oauthKey, oauthSecret) before using the Parse library.
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
            at android.app.ActivityThread.access$600(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.RuntimeException: You must call Parse.initialize(context, oauthKey, oauthSecret) before using the Parse library.
            at com.parse.ParseUser.checkApplicationContext(ParseUser.java:1104)
            at com.parse.ParseUser.getCurrentUser(ParseUser.java:904)
            at com.parse.ParseUser.getCurrentSessionToken(ParseUser.java:960)
            at com.parse.ParseAnalytics.trackAppOpened(ParseAnalytics.java:94)
            at com.parse.ParseAnalytics.trackAppOpened(ParseAnalytics.java:33)
            at it.nicolabrogelli.notifytest.starter.ParseStarterProjectActivity.onCreate(ParseStarterProjectActivity.java:16)
            at android.app.Activity.performCreate(Activity.java:5133)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
            at android.app.ActivityThread.access$600(ActivityThread.java:141)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:5103)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)
08-01 12:02:12.897    4796-4814/it.nicolabrogelli.notifytest E/com.parse.PushService﹕ Tried to use push, but this app is not configured for push due to: Push is not configured for this app because the app manifest is missing required declarations. Please add the following declarations to your app manifest to support either GCM or PPNS for push (or both). To enable GCM support, please make sure that these permissions are declared as children of the root <manifest> element:
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <permission android:name="it.nicolabrogelli.notifytest.permission.C2D_MESSAGE" android:protectionLevel="signature" />
    <uses-permission android:name="it.nicolabrogelli.notifytest.permission.C2D_MESSAGE" />
    Also, please make sure that these services and broadcast receivers are declared as children of the <application> element:
    <service android:name="com.parse.PushService" />
    <receiver android:name="com.parse.GcmBroadcastReceiver" 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="it.nicolabrogelli.notifytest" />
    </intent-filter>
    </receiver>
    To enable PPNS support, please make sure that these permissions are declared as children of the root <manifest> element:
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    Also, please make sure that these services and broadcast receivers are declared as children of the <application> element:
    <service android:name="com.parse.PushService" />
    <receiver android:name="com.parse.ParseBroadcastReceiver">
    <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" />
    <action android:name="android.intent.action.USER_PRESENT" />
    </intent-filter>
    </receiver>

Codice (XML): [Seleziona]
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="it.nicolabrogelli.notifytest">

    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19"/>

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />


    <!--
     IMPORTANT: Change "com.parse.starter.permission.C2D_MESSAGE" in the lines below
     to match your app's package name + ".permission.C2D_MESSAGE".
   -->
    <permission android:protectionLevel="signature"
       android:name="it.nicolabrogelli.notifytest.permission.C2D_MESSAGE" />
    <uses-permission android:name="it.nicolabrogelli.notifytest.permission.C2D_MESSAGE" />


    <application android:allowBackup="true"
       android:label="@string/app_name"
       android:icon="@drawable/ic_launcher"
       android:theme="@style/AppTheme"
       android:name=".starter.ParseApplication">

        <activity
           android:name="it.nicolabrogelli.notifytest.starter.ParseStarterProjectActivity"
           android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <service android:name="com.parse.PushService" />
        <receiver android:name="com.parse.ParseBroadcastReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.intent.action.USER_PRESENT" />
            </intent-filter>
        </receiver>
        <receiver android:name="com.parse.GcmBroadcastReceiver"
           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" />

                <!--
                 IMPORTANT: Change "com.parse.starter" to match your app's package name.
               -->
                <category android:name="it.nicolabrogelli.notifytest" />
            </intent-filter>
        </receiver>


    </application>

</manifest>

Offline LinkOut

  • Utente normale
  • ***
  • Post: 272
  • Respect: +38
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Parse.com
« Risposta #1 il: 01 Agosto 2014, 13:28:56 CEST »
0
Segui le istruzioni del QuickStart di Parse.

Fatti una classe che Estende Application, in questa classe metti
Codice (XML): [Seleziona]
Parse.inizialize(appkey,clientkey);le due chiavi le trovi sempre in quickstart, appkey e clientkey sono nomi di fantasia non mi ricordo come si chiamano effettivamente.

Per quanto riguarda i tempi, quelli sono di google, siccome parse per inviare una notifica push ad un device android deve passare per il famoso GCM (Google Could Message).

PS: Se vuoi gestire l'arrivo della notifica devi inviarla con un "identifier" (formato json) cosicchè il tuo broadcast receiver, la intercetti ed agista di conseguenza.
« Ultima modifica: 01 Agosto 2014, 13:30:57 CEST da LinkOut »

Offline Nicolab1971

  • Utente junior
  • **
  • Post: 108
  • Respect: +2
    • Mostra profilo
Re:Parse.com
« Risposta #2 il: 01 Agosto 2014, 13:31:25 CEST »
0
Ho fatto una classe che estende Application, questoo è il codice

Codice (Java): [Seleziona]
package it.nicolabrogelli.notifytest.starter;

import com.parse.Parse;
import com.parse.ParseACL;
import com.parse.ParseUser;
import com.parse.PushService;

import android.app.Application;
import android.util.Log;

public class ParseApplication extends Application {

        @Override
        public void onCreate() {
                super.onCreate();

   

                // Add your initialization code here
                Parse.initialize(this, "AcAfwccUkxc3pzWFPlpNXco5vOJOcYandeG9F60f", "RMBQaOzmBtIe57QnAOMUz8yJI9KVGj5Xl1wa3Zub");
        PushService.setDefaultPushCallback(this, ParseStarterProjectActivity.class);


                ParseUser.enableAutomaticUser();
                ParseACL defaultACL = new ParseACL();
           
                // If you would like all objects to be private by default, remove this line.
                defaultACL.setPublicReadAccess(true);
               
                ParseACL.setDefaultACL(defaultACL, true);
        }

}

Mentre questa è l'activity

Codice (Java): [Seleziona]
package it.nicolabrogelli.notifytest.starter;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

import com.parse.ParseAnalytics;

import it.nicolabrogelli.notifytest.R;

public class ParseStarterProjectActivity extends Activity {
        /** Called when the activity is first created. */
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);

        }
}

Post unito: 01 Agosto 2014, 13:32:35 CEST
La stranezza è che questo è il progetto base da cui si parte seguendo il tutoria su parse.com

Offline LinkOut

  • Utente normale
  • ***
  • Post: 272
  • Respect: +38
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Parse.com
« Risposta #3 il: 01 Agosto 2014, 13:44:48 CEST »
0
Dovrebbe essere tutto aposto, se si registra a parse e tu lo vedi in data browser, allora i tempi solo templicemente di Google.

In Data Browser devi anche vedere un "deviceToken", se no non puoi inviare le push.

Offline Nicolab1971

  • Utente junior
  • **
  • Post: 108
  • Respect: +2
    • Mostra profilo
Re:Parse.com
« Risposta #4 il: 01 Agosto 2014, 13:47:22 CEST »
0
Si in Data Browser si registra, e come dicevo le notifiche si ricevono, non capisco però come mai nel log sono riportati gli errori che ho postato. Se tutto fosse apposto non ci dovrebbero essere quegli errori .

Offline LinkOut

  • Utente normale
  • ***
  • Post: 272
  • Respect: +38
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Parse.com
« Risposta #5 il: 01 Agosto 2014, 13:57:18 CEST »
0
Perchè evidentemente il Parse.inizialize non viene prima... Deve essere la prima cosa che fai all'apertura...in OnCreate... nel log viene detto che non puoi usare la libreria prima di inizializzarla.

Offline Nicolab1971

  • Utente junior
  • **
  • Post: 108
  • Respect: +2
    • Mostra profilo
Re:Parse.com
« Risposta #6 il: 01 Agosto 2014, 14:03:56 CEST »
0
SI è vero quello che scrivi, infatti all'interno della classe che estende Application come prima cosa si esegue il Parse.inizialize, del resto questo come dicevo è l'esempio scaricato direttamente da Parser.com.
Sicvuramente sarà un banlità ma al momento non la verdo :(

Offline LinkOut

  • Utente normale
  • ***
  • Post: 272
  • Respect: +38
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Parse.com
« Risposta #7 il: 01 Agosto 2014, 14:20:27 CEST »
0
In ParseStarterProjectActivity prova a rimettere Parse.inizialize in onCreate();

Offline Nicolab1971

  • Utente junior
  • **
  • Post: 108
  • Respect: +2
    • Mostra profilo
Re:Parse.com
« Risposta #8 il: 01 Agosto 2014, 14:26:22 CEST »
0
Ho già provato in uno dei tanti tentativi, in quel modo l'applicazione va in crash prima di partire

Offline LinkOut

  • Utente normale
  • ***
  • Post: 272
  • Respect: +38
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Parse.com
« Risposta #9 il: 01 Agosto 2014, 14:29:36 CEST »
0
Zippa e mandami il progetto, gli do un occhiata.

Offline Nicolab1971

  • Utente junior
  • **
  • Post: 108
  • Respect: +2
    • Mostra profilo
Re:Parse.com
« Risposta #10 il: 01 Agosto 2014, 14:44:28 CEST »
0
Siccome non si comprimeva sotto il mega, ho messo il progetto su il mio sito internet a questo indirizzo

http://www.muaythaifirenze.it/download/NotifyTest.rar

Grazie per l'aiuto

Offline LinkOut

  • Utente normale
  • ***
  • Post: 272
  • Respect: +38
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Parse.com
« Risposta #11 il: 01 Agosto 2014, 15:26:29 CEST »
0
Hm... a me non da nessun tipo di errore su Android Studio...

Offline Nicolab1971

  • Utente junior
  • **
  • Post: 108
  • Respect: +2
    • Mostra profilo
Re:Parse.com
« Risposta #12 il: 01 Agosto 2014, 15:28:45 CEST »
0
fantastico :) , anche io uso android studio aggiornato alla versione 0.8.2.


Offline LinkOut

  • Utente normale
  • ***
  • Post: 272
  • Respect: +38
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Parse.com
« Risposta #13 il: 01 Agosto 2014, 15:40:31 CEST »
0
Controlla magari se vedi anche il mio dispositivo...

Comunque non sembrano ci siano errori a me sembra tutto ok.

PS Mi è arrivata la notifica push.

Offline Nicolab1971

  • Utente junior
  • **
  • Post: 108
  • Respect: +2
    • Mostra profilo
Re:Parse.com
« Risposta #14 il: 01 Agosto 2014, 15:42:53 CEST »
0
Si lo vedo. Ma lascio il topic aperto per vedere se qualcunaltro ha lo stesso problema a livello di logcat, visto che le notifiche arrivano.
Grazie per l'aiuto