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;
}
}
}
}
Wo Sie halten diese Aussage in Java-Datei angeben? Eigentlich behalte ich diese Aussage in onCreate(), aber nicht funktioniert. –
Verstanden. Ich habe es gelöst. –
Toller Tipp - danke! – bkurzius