天道酬勤,学无止境

devicetoken

APNs 重复令牌(APNs duplicate tokens)

问题 我们有一个推送通知服务器,它保存几个不同应用程序的数据(设备令牌)。 由于 Apple 希望阻止人们使用 UDID 作为标识符,我正在考虑更改此服务器,以便它不再依赖 UDID 来识别设备。 我知道 APN 返回的令牌不是全局唯一的,而是每个设备唯一的。 然而,在浏览我们的数据库时,我注意到有几种情况(750k+ 注册时有几百个)相同的令牌用于不同的设备。 所以我试图找出导致这种情况的原因。 在这一点上,我看到了两种可能性: 我们的服务器注册处理中的某个地方有一个模糊的错误 Apple 回收这些设备令牌(可能在设备重置后?)。 我们总是存储某个设备上次注册的时间,我注意到使用相同令牌的不同设备的注册之间总是至少有几天的时间。 据我所知,没有不同设备同时使用的令牌。 如果有人能对此有所了解,我将不胜感激。 回答1 我们所知道的是,Apple 告诉我们使用设备令牌将通知推送到设备。 所以,只要你是: 每次应用程序启动并在您的数据库中注册时,查询 APNs 以获取新的设备令牌查询不活动设备的反馈服务并从数据库中清除它们 ...您正在做 Apple 期望您做的事情。 但是,我确实怀疑您的注册码中可能存在错误,因为 100/750k 是一个相当高的冲突率。 考虑到这些设备令牌用于推送通知,很多人会抱怨收到不属于他们的通知......

2021-07-10 02:53:38    分类:技术分享    ios   apple-push-notifications   devicetoken

如何管理 iOS apns 令牌更改(How to manage iOS apns token changes)

问题 我遇到了一个问题,即用户在卸载并重新安装我的应用程序后开始收到双重通知,因为设备向我的服务器发送了 2 个不同的 APNS 令牌 - 一个来自第一次安装,另一个在重新安装应用程序后。 由于令牌不同,我不知道这是同一个设备。 直到iOS 9出来,我每次卸载重装app,总是得到同一个APNS,所以很容易就知道这和之前用户使用的设备是一样的。 从 iOS 9 开始,似乎每次安装都会更改 APNS 令牌。 我的问题是如何判断客户端是否卸载并重新安装应用程序,并更新他的 APNS 令牌而不是添加新令牌? 我在问,因为这听起来像是大多数 iOS 开发人员必须处理的事情,但我无法从 Apple 找到任何关于如何解决这个问题的最佳实践,所以我希望其他人可以分享他们在这个问题上的经验。 回答1 这就是我们最终解决它的方式: 在每次应用启动时: 创建推送通知令牌本地存储中有令牌吗? 是 - 将令牌与本地存储进行比较。 它们相同吗? 是 - 返回否 - 使用新令牌更新服务器,并在服务器响应“OK”后将其保存在本地存储和钥匙串中否 - 检查钥匙串中是否有令牌是 - 将令牌与钥匙串进行比较。 它们相同吗? 是 - 将令牌保存在 localstorage 中并返回否 - 使用新令牌更新服务器,并在服务器响应“OK”后将其保存在本地本地存储和钥匙扣否 - 使用新令牌更新服务器,并在服务器响应“OK

2021-06-23 07:19:20    分类:技术分享    ios   apple-push-notifications   devicetoken

Device token in push notification

I want to send push notification to certain users only. From what I have gone through in Apple docs. The code to register for push notification is this - (void)applicationDidFinishLaunching:(UIApplication *)app { // other setup tasks here.... [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)]; } // Delegation methods - (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken { const void *devTokenBytes = [devToken bytes]; self.registered = YES; [self

2021-06-23 03:33:03    分类:问答    iphone   objective-c   ios   devicetoken

Android GCM 注册 ID 总是以“APA”开头吗?(Do Android GCM registration ids always start with “APA”?)

问题 在我的应用程序中,我注册了不同的设备,对于 Android 设备,我存储 GCM 注册 ID,对于 iOS,我存储设备令牌(推送通知)。 我想区分设备是 iOS 还是 Android。 最简单的方法是什么? Android GCM RegId 是否总是以字符串“APA”开头? 回答1 总之没有。 如果您需要区分 Android 和 iOS 客户端,请在将其发送到您的服务器时包含平台标识符(例如:平台:Android)以及 InstanceID 令牌。 通过这种方式在您的服务器上,您可以知道哪些客户端在哪个平台上。 您不应依赖 InstanceId 令牌的格式来确定设备平台。

2021-06-23 01:26:11    分类:技术分享    android   ios   google-cloud-messaging   devicetoken

iPhone registerForRemoteNotificationTypes 不会生成错误,但不会触发提供设备令牌的委托(iPhone registerForRemoteNotificationTypes does not generate an error but does not fire delegate that gives device token)

问题 我正在开发需要推送通知的 iPhone 应用程序。 我按照创建认证和修改应用程序 ID 的说明进行操作。 我不完全确定我这样做是否正确,但我确实按照说明进行了操作。 知道我如何检查这是否正常吗? 当我在模拟器中运行时,我确实收到一条错误消息,指出模拟器不支持推送通知。 这有点在意料之中。 BTW:这个问题我已经问过好几次了。 它似乎总是与越狱的手机有关。 我的手机没有越狱。 但是当我在 iPhone 上调试时,didRegisterForRemoteNotificationsWithDeviceToken 方法永远不会被触发。 我会非常感谢一些帮助。 我的代码如下。 -(void)applicationDidFinishLaunching:(UIApplication *)application { rootController.delegate = self; [window addSubview:rootController.view]; [window makeKeyAndVisible]; [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge |

2021-06-22 14:45:00    分类:技术分享    ios   iphone   apple-push-notifications   appdelegate   devicetoken

Parse.com deviceToken and PFInstallation not saved

I am encountering a weird behavior of the PFInstallation of my iOS App. On every app launch I am registering the device to receive push notifications and calling the below code on the method didRegisterForRemoteNotificationsWithDeviceToken: PFInstallation *currentInstallation = [PFInstallation currentInstallation]; [currentInstallation setDeviceTokenFromData:deviceToken]; NSLog(@"%@", currentInstallation ); [currentInstallation saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { if (succeeded) { NSLog(@"currentInstallation saved" ); } if (error) { NSLog(@"currentInstallation NOT

2021-06-22 01:44:58    分类:问答    ios   parse-platform   devicetoken

How to get device token id of windows phone for push notification?

I am creating a windows phone 8 app in phone gap + mobile jquery using visual studio 2012. I want to get the device token id from the device for push notifications. Can anyone guide me as to how can I get device token id of windows phone 8?

2021-06-21 09:58:46    分类:问答    windows-phone-8   push-notification   mpns   devicetoken

Getting Remote Notification Device Token in Swift 4?

I am using this code to get the Notification Center Device token. It was working in Swift 3 but not working in Swift 4. What changed? if #available(iOS 10.0, *) { let center = UNUserNotificationCenter.current() center.requestAuthorization(options:[.badge, .alert, .sound]) { (granted, error) in } } func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { let deviceTokenString = deviceToken.reduce("", {$0 + String(format: "%02X", $1)}) print(deviceTokenString) }

2021-06-04 21:35:17    分类:问答    ios   swift   apple-push-notifications   devicetoken

APNs duplicate tokens

We have a push notification server which holds the data (device tokens) for several different applications. With Apple wanting to stop people using the UDID as identifier, I was looking into changing this server so that it does not rely on UDIDs to identify devices any longer. I understand that the tokens returned by APNs are not globally unique, but rather unique per device. However, when going through our database, I noticed that there are several cases (a few hundred on 750k+ registrations) where the same token is used for different devices. So I'm trying to figure out what's causing this

2021-06-03 18:12:25    分类:问答    ios   apple-push-notifications   devicetoken

How to access certificate from eToken in java

I want to read certificate from eToken when it plugged-in, when I store that certificate on local machine I can read it through my java application but, I don't know how to read it from eToken. RSAPublicKey pub; String fileName = "C:\\myCert.cer"; InputStream inStream = new FileInputStream(fileName); CertificateFactory cf = CertificateFactory.getInstance("X.509"); X509Certificate cert = (X509Certificate)cf.generateCertificate(inStream); inStream.close(); pub = (RSAPublicKey) cert.getPublicKey(); System.out.println(cert.getIssuerDN()); System.out.println(cert.getSubjectDN()); System.out.println

2021-06-03 14:14:26    分类:问答    java   encryption   cryptography   certificate   devicetoken