5

ich die Push-Nachrichten zu tun bekommen, aber wenn ich auf sie in der notificationbar klicken diese logcat erscheint und die Meldung verschwindet ...Keine Absicht Empfänger eingestellt Stadt AirShip

Das ist mein logcat Ausgabe:

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

Hier ist mein Manifest Struktur:

 <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> 

Das hier ist mein 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(); 
} 
} 

Und das ist mein 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; 
    } 
} 
} 
} 

Antwort

4

Das Problem war, fehlte mir die folgende Zeile in meinem MyApplication.java Datei :

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

Der ganze Rest war korrekt. Es funktioniert jetzt perfekt.

+1

Wo Sie halten diese Aussage in Java-Datei angeben? Eigentlich behalte ich diese Aussage in onCreate(), aber nicht funktioniert. –

+0

Verstanden. Ich habe es gelöst. –

+0

Toller Tipp - danke! – bkurzius

1

Und ich fehlte Anwendung android:name Attribut in meinem Manifest 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> 
Verwandte Themen