没有收到推送通知,quickblox,android
Posted
技术标签:
【中文标题】没有收到推送通知,quickblox,android【英文标题】:Not receiving push notification, quickblox, android 【发布时间】:2016-08-16 23:42:06 【问题描述】:所以我正在尝试使用 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());
【问题讨论】:
我们遇到了类似的问题。如果将此 QBEnvironment.DEVELOPMENT 更改为 QBEnvironment.PRODUCTION 有什么区别 不,不是,但是我的一位队友确实修复了它 【参考方案1】:你可以检查下:
-
检查推送证书:管理面板 -> 推送通知 -> 设置 -> APNS、GCM 等
检查订阅:管理面板 -> 推送通知 -> 订阅。您还可以检查用户的订阅:管理面板 -> 用户 -> “您的”用户
从管理面板发送推送 -> 推送通知 -> 发送
http://quickblox.com/developers/SimpleSample-messages_users-android#Send_Push_Notifications_from_Admin_panel
【讨论】:
以上是关于没有收到推送通知,quickblox,android的主要内容,如果未能解决你的问题,请参考以下文章