2016-08-16 5 views
0

Also ich versuche, Push-Benachrichtigungen mit GCM und quickBlox zu implementieren, so dass ich für Push-Benachrichtigungen mit quickblox abonnieren kann und während die Nachricht gesendet wird, keine Benachrichtigung erhalten.Keine Push-Benachrichtigung, quickblox, android

Ich folgte im Wesentlichen die Anleitung hier: http://quickblox.com/developers/SimpleSample-messages_users-android#Send_Push_Notifications_from_Application

Hier ist mein Code

public class MainActivity extends AppCompatActivity { 

static final String APP_ID = "45535"; 
static final String AUTH_KEY = "L-kz28SrxuSrn23"; 
static final String AUTH_SECRET = "zJX63sgj9Nm3qMB"; 
static final String ACCOUNT_KEY = "sor71FWvtVnx7d9JdTyd"; 

private GoogleCloudMessaging googleCloudMessaging; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 



    QBSettings.getInstance().init(getApplicationContext(), APP_ID, AUTH_KEY, AUTH_SECRET); 
    QBSettings.getInstance().setAccountKey(ACCOUNT_KEY); 

    if (checkPlayServices()) { 
     // Start IntentService to register this application with GCM. 
     Intent intent = new Intent(this, RegistrationIntentService.class); 
     startService(intent); 
    } 


    // Create quickblox session with user 
    QBAuth.createSession("laddu", "chowmein", new QBEntityCallback<QBSession>() { 
     @Override 
     public void onSuccess(QBSession session, Bundle params) { 
      //request Registration ID 
      String registrationId = "16441570"; 

      // Subscribe to Push Notifications 
      subscribeToPushNotifications(registrationId); 

     } 

     @Override 
     public void onError(QBResponseException errors) { 

     } 
    }); 


    EditText text; 
    text = (EditText) findViewById(R.id.editText); 

    Button send; 
    send = (Button) findViewById(R.id.button); 
    send.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View view) { 
      StringifyArrayList<Integer> userIds = new StringifyArrayList<Integer>(); 
      //add different user ID 
      userIds.add(16335930); 
      userIds.add(16441570); 

      QBEvent event = new QBEvent(); 
      event.setUserIds(userIds); 
      event.setEnvironment(QBEnvironment.DEVELOPMENT); 
      event.setNotificationType(QBNotificationType.PUSH); 
      event.setPushType(QBPushType.GCM); 

      //HashMap<String, String> data = new HashMap<String, String>(); 
      //data.put("data.message", "Hello"); 
      //data.put("data.type", "welcome message"); 

      event.setMessage("Hello"); 

      QBPushNotifications.createEvent(event, new QBEntityCallback<QBEvent>() { 
       @Override 
       public void onSuccess(QBEvent qbEvent, Bundle args) { 
        // sent 
       } 

       @Override 
       public void onError(QBResponseException errors) { 

       } 
      }); 
     } 
    }); 
} 

/** 
* Check the device to make sure it has the Google Play Services APK. If 
* it doesn't, display a dialog that allows users to download the APK from 
* the Google Play Store or enable it in the device's system settings. 
*/ 
private boolean checkPlayServices() { 
    GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance(); 
    int resultCode = apiAvailability.isGooglePlayServicesAvailable(this); 
    if (resultCode != ConnectionResult.SUCCESS) { 
     if (apiAvailability.isUserResolvableError(resultCode)) { 
      //apiAvailability.getErrorDialog(this, resultCode, PLAY_SERVICES_RESOLUTION_REQUEST) 
        //.show(); 
     } else { 
      //Log.i(TAG, "This device is not supported."); 
      finish(); 
     } 
     return false; 
    } 
    return true; 
} 


public void subscribeToPushNotifications(String registrationID) { 
    QBSubscription subscription = new QBSubscription(QBNotificationChannel.GCM); 
    subscription.setEnvironment(QBEnvironment.DEVELOPMENT); 
    // 
    String deviceId; 
    final TelephonyManager mTelephony = (TelephonyManager) getSystemService(
      Context.TELEPHONY_SERVICE); 
    if (mTelephony.getDeviceId() != null) { 
     deviceId = mTelephony.getDeviceId(); //*** use for mobiles 
    } else { 
     deviceId = mTelephony.getDeviceId(); 
     //deviceId = Settings.Secure.getString(activity.getContentResolver(), 
      //  Settings.Secure.ANDROID_ID); //*** use for tablets 
    } 
    subscription.setDeviceUdid(deviceId); 
    Toast.makeText(MainActivity.this, deviceId, Toast.LENGTH_SHORT).show(); 
    // 
    subscription.setRegistrationID(registrationID); 
    // 
    QBPushNotifications.createSubscription(subscription, new QBEntityCallback<ArrayList<QBSubscription>>() { 

     @Override 
     public void onSuccess(ArrayList<QBSubscription> subscriptions, Bundle args) { 

     } 

     @Override 
     public void onError(QBResponseException error) { 

     } 
    }); 
} 

}

public class MyGcmListenerService erweitert GcmListenerService {

private static final String TAG = "MyGcmListenerService"; 

@Override 
public void onMessageReceived(String from, Bundle data) { 
    String message = data.toString(); 
    Log.d(TAG, "From: " + from); 
    Log.d(TAG, "Message: " + message); 

    if (from.startsWith("/topics/")) { 
     // message received from some topic. 
    } else { 
     // normal downstream message. 
    } 

    sendNotification(message); 
    // [END_EXCLUDE] 
} 

private void sendNotification(String message) { 
    Intent intent = new Intent(this, MainActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, 
      PendingIntent.FLAG_ONE_SHOT); 

    Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
      .setContentTitle("GCM Message") 
      .setContentText(message) 
      .setAutoCancel(true) 
      .setSound(defaultSoundUri) 
      .setContentIntent(pendingIntent); 

    NotificationManager notificationManager = 
      (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

    notificationManager.notify(0 /* ID of notification */, notificationBuilder.build()); 
} 

}

+0

wir ein ähnliches Problem auftritt. Gibt es einen Unterschied, wenn Sie diese QBEnvironment.DEVELOPMENT in QBEnvironment.PRODUCTION ändern – dazza5000

+0

Nein, nicht wirklich, aber einer meiner Teamkollegen hat es behoben – lykan

Antwort

0

Sie können die nächste überprüfen:

  1. überprüfen Push-Zertifikat: Admin-Panel -> Push-Benachrichtigung -> Einstellungen -> APNS, GCM usw.
  2. überprüfen Abonnements: Admin-Panel -> Push-Benachrichtigungen -> Abonnements . Sie können auch Abonnements für Benutzer überprüfen: Admin-Panel -> Benutzer -> "Ihre" user
  3. Senden von Push Admin Panel -> Push-Benachrichtigungen -> Senden http://quickblox.com/developers/SimpleSample-messages_users-android#Send_Push_Notifications_from_Admin_panel
Verwandte Themen