voip推送当无法使用pushkit时,使用background推送模式

This commit is contained in:
imhao183
2021-03-29 09:56:06 +08:00
parent b088f4b9b9
commit 9edb2caf93
2 changed files with 12 additions and 4 deletions

View File

@@ -6,4 +6,7 @@ apns.voip_cer_pwd=123456
apns.alert=default
apns.voip_alert=ring.caf
apns.voip_feature=true
# 苹果要求使用voip推送必须使用callkit不然会停掉voip推送。由于大陆政策callkit被禁止所以在大陆无法使用voip推送。
# 苹果政策参考 https://developer.apple.com/documentation/pushkit/pkpushregistrydelegate/2875784-pushregistry?language=objc
# On iOS 13.0 and later, if you fail to report a call to CallKit, the system will terminate your app. Repeatedly failing to report calls may cause the system to stop delivering any more VoIP push notifications to your app. If you want to initiate a VoIP call without using CallKit, register for push notifications using the UserNotifications framework instead of PushKit. For more information, see UserNotifications.
apns.voip_feature=false

View File

@@ -197,7 +197,6 @@ public class ApnsServer {
payloadBuilder.setBadgeNumber(badge);
payloadBuilder.setSound(sound);
final String payload = payloadBuilder.buildWithDefaultMaximumLength();
final String token;
if (service == productVoipSvc || service == developVoipSvc) {
token = pushMessage.voipDeviceToken;
@@ -213,14 +212,20 @@ public class ApnsServer {
if (!mConfig.voipFeature || pushMessage.pushMessageType == PushMessageType.PUSH_MESSAGE_TYPE_NORMAL || StringUtils.isEmpty(pushMessage.getVoipDeviceToken())) {
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);
} else {
c.add(Calendar.MINUTE, 1); //voip通知使用普通推送
pushNotification = new SimpleApnsPushNotification(token, pushMessage.packageName, payload, c.getTime(), DeliveryPriority.IMMEDIATE, PushType.ALERT);
payloadBuilder.setContentAvailable(true);
payloadBuilder.addCustomProperty("voip", true);
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);
}
} else {
c.add(Calendar.MINUTE, 1);
String payload = payloadBuilder.buildWithDefaultMaximumLength();
pushNotification = new SimpleApnsPushNotification(token, pushMessage.packageName + ".voip", payload, c.getTime(), DeliveryPriority.IMMEDIATE, PushType.VOIP);
}