我和我的同事正在构建一个应用程序,并使用AWS SNS API实施推送通知功能。 这里的问题是,某些设备运行良好,但无论操作系统是什么版本(例如iOS 11,12),iPhone 6、7、8之类的设备都不会收到通知。
我们通过检查以下几点来介绍基本内容:
- 所有测试设备上的通知均已打开
- 测试人员授予在应用启动时接收通知的权限
- 上传到AWS的p12证书有效且格式正确
我们从AWS CloudWatch Logs获得的错误消息大多是“错误的设备令牌”或“未注册的”,但是我们确定一旦从APNS获得它,我们就会立即上传设备令牌。
编辑:已添加实际代码
注册通知(在didFinishLaunchingWithOptions
内)
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
if let error = error {
print("\(error.localizedDescription)")
} else {
application.registerForRemoteNotifications()
}
}
获取令牌
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
print("Successfully registered for notifications!")
// upload token to our database for later use
}
我们有什么想念的吗?