5

faccio ricevere i messaggi push, ma ogni volta che clicco su di loro all'interno del notificationbar appare questa logcat e scompare di notifica ...No ricevitore intento impostato urbano dirigibile

Questa è la mia uscita logcat:

05-31 16:49:47.165: D/Test - UALib(20523): No intent receiver set, not sending ACTION_NOTIFICATION_OPENED 

Qui è la mia struttura manifesta:

 <category android:name="com.test.push" /> 
    </intent-filter> 
</receiver> 

<service 
    android:name="com.urbanairship.push.PushService" 
    android:label="Push Notification Service" /> 
<service 
    android:name="com.urbanairship.push.PushWorkerService" 
    android:label="Push Notification Worker Service" /> 
<service 
    android:name="com.urbanairship.analytics.EventService" 
    android:label="Event Service" /> 

<provider 
    android:name="com.urbanairship.UrbanAirshipProvider" 
    android:authorities="com.test.push.urbanairship.provider" 
    android:exported="false" 
    android:multiprocess="true" /> 

<activity 
    android:name="com.test.push.MainActivity" 
    android:label="@string/app_name" > 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 
<activity 
    android:name="com.test.push.SettingsActivity" 
    android:label="@string/title_activity_settings" /> 
<activity 
    android:name="com.test.push.ChooseClass" 
    android:label="@string/app_name" /> 
</application> 

Questa è la mia MyApplication.java:

public class MyApplication extends Application { 

@Override 
public void onCreate() { 
AirshipConfigOptions options = AirshipConfigOptions 
     .loadDefaultOptions(this); 
options.developmentAppKey = "1234567890"; 
options.developmentAppSecret = "1234567890"; 
options.productionAppKey = ""; 
options.productionAppSecret = ""; 
options.gcmSender = "1234567890"; 
options.transport = "gcm"; 
options.inProduction = false; 

UAirship.takeOff(this, options); 
PushManager.enablePush(); 
} 
} 

E questo è il mio IntentReceiver.java:

public class IntentReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(Context aContext, Intent aIntent) { 
String action = aIntent.getAction(); 

if (action.equals(PushManager.ACTION_PUSH_RECEIVED)) { 
    logPushExtras(aIntent); 
} else if (action.equals(PushManager.ACTION_NOTIFICATION_OPENED)) { 
    logPushExtras(aIntent); 

    Intent launch = new Intent(Intent.ACTION_MAIN); 
    launch.setClass(UAirship.shared().getApplicationContext(), 
      MainActivity.class); 

    launch.putExtra("push_message", 
      aIntent.getStringExtra(PushManager.EXTRA_ALERT)); 
    launch.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

    UAirship.shared().getApplicationContext().startActivity(launch); 
} else if (action.equals(PushManager.ACTION_REGISTRATION_FINISHED)) { 
    Logger.info("device registrated, APID=" 
      + aIntent.getStringExtra(PushManager.EXTRA_APID) 
      + ", valid=" 
      + aIntent.getBooleanExtra(
        PushManager.EXTRA_REGISTRATION_VALID, false)); 
} 
} 

private void logPushExtras(Intent intent) { 
Set<String> keys = intent.getExtras().keySet(); 
for (String key : keys) { 

    List<String> ignoredKeys = (List<String>) Arrays.asList(
      "collapse_key", "from", PushManager.EXTRA_NOTIFICATION_ID, 
      PushManager.EXTRA_PUSH_ID, PushManager.EXTRA_ALERT); 
    if (ignoredKeys.contains(key)) { 
     continue; 
    } 
} 
} 
} 

risposta

4

Il problema è stato, mi mancava la seguente riga all'interno del mio file di MyApplication.java :

PushManager.shared().setIntentReceiver(IntentReceiver.class); 

Tutto il resto era corretto. Ora funziona perfettamente.

+1

dove si tiene questa dichiarazione nel file di Java? In realtà tengo questa affermazione su onCreate(), ma non funziona. –

+0

Capito. L'ho risolto. –

+0

Ottimo suggerimento - grazie! – bkurzius

1

E mi mancava per specificare l'attributo di applicazione android:name nel mio manifesto file-

<application 
    android:allowBackup="true" 
    android:icon="@drawable/app_icon" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" 
    android:allowClearUserData="true" 
    android:enabled="true" 
    android:name=".MyMainApplication"> 

    <activity> 
    Some Activity 
    </activity> 

</application> 
Problemi correlati