支持APNS p8证书
This commit is contained in:
6
apns/AuthKey_PXA4CCXXXX.p8
Normal file
6
apns/AuthKey_PXA4CCXXXX.p8
Normal file
@@ -0,0 +1,6 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIGXAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgGyCRn7aWnLChrRxF
|
||||
2Xf0PN7BOMIF4EQth/OynvzXY0ygCgYIKoZIzj0DAQehRANCAAQ9vdBVqZfAvFi+
|
||||
WSWiF1I9V54lt377jAPddY53Gd3f49imoE39C001TOhbso7t4U5+1m5gar6Y80fZ
|
||||
w1n01kI1
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -1,8 +1,17 @@
|
||||
# p12证书和p8证书选一个就行。如果选p12证书,请把 apns.auth_key_path的这几行删掉。
|
||||
|
||||
# p12证书配置。
|
||||
apns.cer_path=apns/wfc.p12
|
||||
apns.cer_pwd=123456
|
||||
apns.voip_cer_path=apns/wfc_voip.p12
|
||||
apns.voip_cer_pwd=123456
|
||||
|
||||
# p8证书配置
|
||||
apns.auth_key_path=apns/AuthKey_PXA4CCXXXX.p8
|
||||
apns.key_id=PXA4CCXXXX
|
||||
apns.team_id=Y8356MXXXX
|
||||
|
||||
# 铃声配置
|
||||
apns.alert=default
|
||||
apns.voip_alert=ring.caf
|
||||
|
||||
|
||||
@@ -11,6 +11,10 @@ public class ApnsConfig {
|
||||
String cerPath;
|
||||
String cerPwd;
|
||||
|
||||
String authKeyPath;
|
||||
String keyId;
|
||||
String teamId;
|
||||
|
||||
String voipCerPath;
|
||||
String voipCerPwd;
|
||||
|
||||
@@ -74,4 +78,28 @@ public class ApnsConfig {
|
||||
public void setVoipFeature(boolean voipFeature) {
|
||||
this.voipFeature = voipFeature;
|
||||
}
|
||||
|
||||
public String getAuthKeyPath() {
|
||||
return authKeyPath;
|
||||
}
|
||||
|
||||
public void setAuthKeyPath(String authKeyPath) {
|
||||
this.authKeyPath = authKeyPath;
|
||||
}
|
||||
|
||||
public String getKeyId() {
|
||||
return keyId;
|
||||
}
|
||||
|
||||
public void setKeyId(String keyId) {
|
||||
this.keyId = keyId;
|
||||
}
|
||||
|
||||
public String getTeamId() {
|
||||
return teamId;
|
||||
}
|
||||
|
||||
public void setTeamId(String teamId) {
|
||||
this.teamId = teamId;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import cn.wildfirechat.push.PushMessage;
|
||||
import cn.wildfirechat.push.PushMessageType;
|
||||
import cn.wildfirechat.push.Utility;
|
||||
import com.turo.pushy.apns.*;
|
||||
import com.turo.pushy.apns.auth.ApnsSigningKey;
|
||||
import com.turo.pushy.apns.metrics.micrometer.MicrometerApnsClientMetricsListener;
|
||||
import com.turo.pushy.apns.util.ApnsPayloadBuilder;
|
||||
import com.turo.pushy.apns.util.SimpleApnsPushNotification;
|
||||
@@ -21,6 +22,8 @@ import org.springframework.util.StringUtils;
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.security.InvalidKeyException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.Calendar;
|
||||
|
||||
import static java.lang.System.exit;
|
||||
@@ -56,34 +59,64 @@ public class ApnsServer {
|
||||
}
|
||||
|
||||
try {
|
||||
productSvc = new ApnsClientBuilder()
|
||||
.setApnsServer(ApnsClientBuilder.PRODUCTION_APNS_HOST)
|
||||
.setClientCredentials(new File(mConfig.cerPath), mConfig.cerPwd)
|
||||
.setMetricsListener(productMetricsListener)
|
||||
.build();
|
||||
|
||||
developSvc = new ApnsClientBuilder()
|
||||
.setApnsServer(ApnsClientBuilder.DEVELOPMENT_APNS_HOST)
|
||||
.setClientCredentials(new File(mConfig.cerPath), mConfig.cerPwd)
|
||||
.setMetricsListener(developMetricsListener)
|
||||
.build();
|
||||
|
||||
if (mConfig.voipFeature) {
|
||||
productVoipSvc = new ApnsClientBuilder()
|
||||
if (!StringUtils.isEmpty(mConfig.authKeyPath) && !StringUtils.isEmpty(mConfig.keyId) && !StringUtils.isEmpty(mConfig.teamId)) {
|
||||
productSvc = new ApnsClientBuilder()
|
||||
.setApnsServer(ApnsClientBuilder.PRODUCTION_APNS_HOST)
|
||||
.setClientCredentials(new File(mConfig.voipCerPath), mConfig.voipCerPwd)
|
||||
.setSigningKey(ApnsSigningKey.loadFromPkcs8File(new File(mConfig.authKeyPath), mConfig.teamId, mConfig.keyId))
|
||||
.setMetricsListener(productMetricsListener)
|
||||
.build();
|
||||
developVoipSvc = new ApnsClientBuilder()
|
||||
|
||||
developSvc = new ApnsClientBuilder()
|
||||
.setApnsServer(ApnsClientBuilder.DEVELOPMENT_APNS_HOST)
|
||||
.setClientCredentials(new File(mConfig.voipCerPath), mConfig.voipCerPwd)
|
||||
.setSigningKey(ApnsSigningKey.loadFromPkcs8File(new File(mConfig.authKeyPath), mConfig.teamId, mConfig.keyId))
|
||||
.setMetricsListener(developMetricsListener)
|
||||
.build();
|
||||
}
|
||||
|
||||
if (mConfig.voipFeature) {
|
||||
productVoipSvc = new ApnsClientBuilder()
|
||||
.setApnsServer(ApnsClientBuilder.PRODUCTION_APNS_HOST)
|
||||
.setSigningKey(ApnsSigningKey.loadFromPkcs8File(new File(mConfig.authKeyPath), mConfig.teamId, mConfig.keyId))
|
||||
.setMetricsListener(productMetricsListener)
|
||||
.build();
|
||||
developVoipSvc = new ApnsClientBuilder()
|
||||
.setApnsServer(ApnsClientBuilder.DEVELOPMENT_APNS_HOST)
|
||||
.setSigningKey(ApnsSigningKey.loadFromPkcs8File(new File(mConfig.authKeyPath), mConfig.teamId, mConfig.keyId))
|
||||
.setMetricsListener(developMetricsListener)
|
||||
.build();
|
||||
}
|
||||
} else {
|
||||
productSvc = new ApnsClientBuilder()
|
||||
.setApnsServer(ApnsClientBuilder.PRODUCTION_APNS_HOST)
|
||||
.setClientCredentials(new File(mConfig.cerPath), mConfig.cerPwd)
|
||||
.setMetricsListener(productMetricsListener)
|
||||
.build();
|
||||
|
||||
developSvc = new ApnsClientBuilder()
|
||||
.setApnsServer(ApnsClientBuilder.DEVELOPMENT_APNS_HOST)
|
||||
.setClientCredentials(new File(mConfig.cerPath), mConfig.cerPwd)
|
||||
.setMetricsListener(developMetricsListener)
|
||||
.build();
|
||||
|
||||
if (mConfig.voipFeature) {
|
||||
productVoipSvc = new ApnsClientBuilder()
|
||||
.setApnsServer(ApnsClientBuilder.PRODUCTION_APNS_HOST)
|
||||
.setClientCredentials(new File(mConfig.voipCerPath), mConfig.voipCerPwd)
|
||||
.setMetricsListener(productMetricsListener)
|
||||
.build();
|
||||
developVoipSvc = new ApnsClientBuilder()
|
||||
.setApnsServer(ApnsClientBuilder.DEVELOPMENT_APNS_HOST)
|
||||
.setClientCredentials(new File(mConfig.voipCerPath), mConfig.voipCerPwd)
|
||||
.setMetricsListener(developMetricsListener)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
exit(-1);
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
throw new RuntimeException(e);
|
||||
} catch (InvalidKeyException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user