优化apns推送
This commit is contained in:
@@ -90,25 +90,6 @@ public class ApnsServer {
|
||||
|
||||
public void pushMessage(PushMessage pushMessage) {
|
||||
ApnsClient service;
|
||||
if (pushMessage.getPushType() == IOSPushType.IOS_PUSH_TYPE_DISTRIBUTION) {
|
||||
if (!mConfig.voipFeature || pushMessage.pushMessageType == PushMessageType.PUSH_MESSAGE_TYPE_NORMAL || StringUtils.isEmpty(pushMessage.getVoipDeviceToken())) {
|
||||
service = productSvc;
|
||||
} else {
|
||||
service = productVoipSvc;
|
||||
}
|
||||
} else {
|
||||
if (!mConfig.voipFeature || pushMessage.pushMessageType == PushMessageType.PUSH_MESSAGE_TYPE_NORMAL || StringUtils.isEmpty(pushMessage.getVoipDeviceToken())) {
|
||||
service = developSvc;
|
||||
} else {
|
||||
service = developVoipSvc;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (service == null) {
|
||||
LOG.error("Service not exist!!!!");
|
||||
return;
|
||||
}
|
||||
String sound = mConfig.alert;
|
||||
|
||||
String pushContent = pushMessage.getPushContent();
|
||||
@@ -197,23 +178,19 @@ public class ApnsServer {
|
||||
payloadBuilder.setBadgeNumber(badge);
|
||||
payloadBuilder.setSound(sound);
|
||||
|
||||
final String token;
|
||||
if (service == productVoipSvc || service == developVoipSvc) {
|
||||
token = pushMessage.voipDeviceToken;
|
||||
} else {
|
||||
token = pushMessage.deviceToken;
|
||||
}
|
||||
|
||||
Calendar c = Calendar.getInstance();
|
||||
|
||||
|
||||
ApnsPushNotification pushNotification;
|
||||
|
||||
if (!mConfig.voipFeature || pushMessage.pushMessageType == PushMessageType.PUSH_MESSAGE_TYPE_NORMAL || StringUtils.isEmpty(pushMessage.getVoipDeviceToken())) {
|
||||
if (pushMessage.getPushType() == IOSPushType.IOS_PUSH_TYPE_DISTRIBUTION) {
|
||||
service = productSvc;
|
||||
} else {
|
||||
service = developSvc;
|
||||
}
|
||||
if(pushMessage.pushMessageType == PushMessageType.PUSH_MESSAGE_TYPE_NORMAL || StringUtils.isEmpty(pushMessage.getVoipDeviceToken())) {
|
||||
c.add(Calendar.MINUTE, 10); //普通推送
|
||||
String payload = payloadBuilder.buildWithDefaultMaximumLength();
|
||||
pushNotification = new SimpleApnsPushNotification(token, pushMessage.packageName, payload, c.getTime(), DeliveryPriority.CONSERVE_POWER, PushType.ALERT);
|
||||
pushNotification = new SimpleApnsPushNotification(pushMessage.deviceToken, pushMessage.packageName, payload, c.getTime(), DeliveryPriority.CONSERVE_POWER, PushType.ALERT);
|
||||
} else {
|
||||
c.add(Calendar.MINUTE, 1); //voip通知,使用普通推送
|
||||
payloadBuilder.setContentAvailable(true);
|
||||
@@ -221,14 +198,23 @@ public class ApnsServer {
|
||||
payloadBuilder.addCustomProperty("voip_type", pushMessage.pushMessageType);
|
||||
payloadBuilder.addCustomProperty("voip_data", pushMessage.pushData);
|
||||
String payload = payloadBuilder.buildWithDefaultMaximumLength();
|
||||
pushNotification = new SimpleApnsPushNotification(token, pushMessage.packageName, payload, c.getTime(), DeliveryPriority.IMMEDIATE, PushType.BACKGROUND);
|
||||
pushNotification = new SimpleApnsPushNotification(pushMessage.deviceToken, pushMessage.packageName, payload, c.getTime(), DeliveryPriority.IMMEDIATE, PushType.BACKGROUND);
|
||||
}
|
||||
} else {
|
||||
if (pushMessage.getPushType() == IOSPushType.IOS_PUSH_TYPE_DISTRIBUTION) {
|
||||
service = productVoipSvc;
|
||||
} else {
|
||||
service = developVoipSvc;
|
||||
}
|
||||
c.add(Calendar.MINUTE, 1);
|
||||
String payload = payloadBuilder.buildWithDefaultMaximumLength();
|
||||
pushNotification = new SimpleApnsPushNotification(token, pushMessage.packageName + ".voip", payload, c.getTime(), DeliveryPriority.IMMEDIATE, PushType.VOIP);
|
||||
pushNotification = new SimpleApnsPushNotification(pushMessage.voipDeviceToken, pushMessage.packageName + ".voip", payload, c.getTime(), DeliveryPriority.IMMEDIATE, PushType.VOIP);
|
||||
}
|
||||
|
||||
if (service == null) {
|
||||
LOG.error("Service not exist!!!!");
|
||||
return;
|
||||
}
|
||||
|
||||
final PushNotificationFuture<ApnsPushNotification, PushNotificationResponse<ApnsPushNotification>>
|
||||
sendNotificationFuture = service.sendNotification(pushNotification);
|
||||
@@ -241,13 +227,15 @@ public class ApnsServer {
|
||||
if (future.isSuccess()) {
|
||||
final PushNotificationResponse<ApnsPushNotification> pushNotificationResponse =
|
||||
sendNotificationFuture.getNow();
|
||||
|
||||
// Handle the push notification response as before from here.
|
||||
if(!pushNotificationResponse.isAccepted()) {
|
||||
LOG.error("apns push failure: {}", pushNotificationResponse.getRejectionReason());
|
||||
}
|
||||
} else {
|
||||
// Something went wrong when trying to send the notification to the
|
||||
// APNs gateway. We can find the exception that caused the failure
|
||||
// by getting future.cause().
|
||||
future.cause().printStackTrace();
|
||||
LOG.error("apns push failure: {}", future.cause().getLocalizedMessage());
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user