2015-07-15 6 views
8

Ich habe Urban Airship SDK zu meiner Anwendung auf dem Gerät mit Android 4.2 (Jelly Bean) integriert. Ich habe allgemeine Push-Benachrichtigungen erhalten. Es ist in Ordnung. Aber ich möchte interaktive Push-Benachrichtigung mit Knopf mit "Speichern" Label bekommen.So erhalten Sie interaktive Push-Benachrichtigungen mit Urban Airship in Android?

Meine Abhängigkeiten von build.gradle:

dependencies { 
    compile 'com.google.code.gson:gson:2.2.4' 
    compile 'com.google.android.gms:play-services:+' 

    compile project (':urbanairship-lib-6.1.1') 
    compile 'com.android.support:support-v4:22.2.0' 

    // Recommended for in-app messaging 
    compile 'com.android.support:cardview-v7:22.2.0' 

    // Recommended for location services 
    compile 'com.google.android.gms:play-services-location:7.5.0' 

    // Required for Android (GCM) push notifications 
    compile 'com.google.android.gms:play-services-gcm:7.5.0' 

    compile files('libs/commons-io-2.4.jar') 
    compile files('libs/FlurryAnalytics-4.1.0.jar') 
    compile files('libs/nineoldandroids-2.4.0.jar') 
} 

Nach official documentation ich den folgenden Code in der onCreate() Methode in MyApplication Klasse hinzugefügt haben:

@Override 
public void onCreate() { 
    AirshipConfigOptions options = new AirshipConfigOptions(); 
    options.developmentAppKey = "sdgsdgsdhsdh"; 
    options.developmentAppSecret = "sdhsdhsdhsdhsh"; 
    options.productionAppKey = "Your Production App Key"; 
    options.productionAppSecret = "Your Production App Secret"; 
    options.inProduction = false; 

    options.gcmSender = "11111111"; 

    UAirship.takeOff(this, options); 

    NotificationActionButton hiButtonAction = new NotificationActionButton.Builder("btnSave") 
      .setLabel(R.string.save) 
      .setPerformsInForeground(true) 
      .build(); 

    // Define the group 
    NotificationActionButtonGroup buttonGroup = new NotificationActionButtonGroup.Builder() 
      .addNotificationActionButton(hiButtonAction) 
      .build(); 

    // Add the custom group 
    UAirship.shared().getPushManager().addNotificationActionButtonGroup("save", buttonGroup); 

    UAirship.shared().getPushManager().setUserNotificationsEnabled(true); 

    UAirship.shared().getPushManager().setPushEnabled(true); 
} 

Danach habe ich versucht, Prüfdrucktaste von meinem städtischen Luftschiffkonto:

EDITIEREN:

Ich habe Urban Airship API v3 verwendet.

{ 
    "audience": { 
    "named_user": "2971" 
    }, 
    "device_types":["android"], 
    "notification": { 
    "android": { 
     "alert": "Hello", 
     "extra": { 
     "EEID": "2971", 
     "DATE": "20150601" 
     }, 
     "interactive": { 
     "type": "save" 
     } 
    } 
    } 
} 

Aber ich habe allgemeine Push-Benachrichtigung mit „Hallo“ Text und ohne Tasten erhalten: Nach official documentation habe ich Push mit json gesendet.

Was könnte das Problem sein und wie Sie einige Aktivitäten öffnen, indem Sie auf die Schaltfläche in der Benachrichtigung klicken?

Vielen Dank im Voraus.

+0

Wenn ich mich richtig erinnere, hat der "test push" -Komposer keine Möglichkeit, interaktive Benachrichtigungen zu senden. Sie müssen die Benachrichtigung über den normalen Push-Composer senden. Oder senden Sie es einfach über die API wie hier dokumentiert: http://docs.urbanairship.com/api/ua.html#interactive-notifications – dperconti

+0

Endlich habe ich die Antwort gefunden. Ich habe diese Schaltfläche "Speichern" in meiner Benachrichtigung nicht gesehen, weil ich das Telefon über USB mit dem PC verbunden habe. http://Stackoverflow.com/a/18477621/1225669 – anivaler

+0

Wow, Spaß Problem. Wird es angezeigt, wenn Sie versuchen, die Benachrichtigung manuell zu erweitern? – ralepinski

Antwort

0

Der Schlüssel "Kategorie" ist nicht die richtige auf Android. Es sucht eigentlich nach "com.urbanairship.interactive_type". Sie sollten jedoch entweder den Haupt-Composer oder die Push-API direkt verwenden.

curl -v -X POST -u <APP_KEY>:<MASTER_SECRET> -H "Content-type: application/json" -H "Accept: application/vnd.urbanairship+json; version=3;" --data '{ 
    "audience":"ALL", 
    "device_types":["android"], 
    "notification": { 
     "android": { 
      "alert": "Hello", 
      "interactive": { 
       "type": "save" 
      } 
     } 
    } 
}' https://go.urbanairship.com/api/push/ 

Aber mit Ihren Apps Anmeldeinformationen für um weitere Informationen zu <APP_KEY>:<MASTER_SECRET>

http://docs.urbanairship.com/api/ua.html#interactive-api See.

+0

Ok. Ich werde zu Dir zurück kommen. Noch eine Frage. Soll ich benutzerdefinierte NotificationFactory erstellen, um die Schaltfläche "Speichern" in der Benachrichtigung anzuzeigen? – anivaler

+0

Nein. Es funktioniert nicht für mich. Ich habe eine allgemeine Benachrichtigung ohne Tasten erhalten. – anivaler

+0

Wenn Sie eine benutzerdefinierte Benachrichtigungsfactory verwenden, müssen Sie 'builder.extend (createNotificationActionsExtender (message, notificationId)); aufrufen, um Benachrichtigungen zu erhalten. – ralepinski

Verwandte Themen