最近经常有人问集成友盟推送收不到推送消息, 总结后发现主要为两个原因:
1、应用环境
2、推送证书
3、后台production_mode参数
首先确认你当前应用的环境(开发or生产)
测试环境(开发环境)
1、首先在友盟后台可根据添加deviceToken来直接推送,如果可以收到,这说明你的开发环境的证书是没问题的,如果收不到就是你的证书有问题,或者deviceToken添加错误;
2、如果在开发环境你收不到后台给你推送的消息而你自己在后台测试是可以收到的,那99%的可能就是后台把production_mode 设置成为了true (默认) 即为生产环境(正式环境),修改即可;
正式环境(生产环境)
1、首先确保开发环境是可以收到推送;
2、如果在生产环境你收不到后台给你推送的消息,那99%的可能就是后台把production_mode 设置成为了false 即为开发环境(测试环境),修改即可;
注:友盟官网 关于production_mode 参数的介绍
"production_mode":"true/false" // 可选,正式/测试模式。默认为true
// 测试模式只会将消息发给测试设备。测试设备需要到web上添加。
附:OC 以及 Swift 获取友盟deviceToken的方法
// OC
NSLog(@"%@",[[[[deviceToken description] stringByReplacingOccurrencesOfString: @"<" withString: @""]
stringByReplacingOccurrencesOfString: @">" withString: @""]
stringByReplacingOccurrencesOfString: @" " withString: @""]);
//Swift
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
let tokenData = NSData(data: deviceToken)
let deviceToken = tokenData.description.replacingOccurrences(of:"<", with:"").replacingOccurrences(of:">", with:"").replacingOccurrences(of:" ", with:"")
}