所以我尝试使用GCM和quickBlox实现推送通知,因此我可以使用quickblox订阅推送通知,并且在发送消息时,不会收到任何通知。
我基本上遵循了这里的指南:http://quickblox.com/developers/SimpleSample-messages_users-android#Send_Push_Notifications_from_Application
这是我的代码
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) {
}
});
}
}
公共类MyGcmListenerService扩展了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 :(得分:0)
您可以查看下一个: