我已经阅读了很多这方面的教程,我只是想知道这是否是正确的方法
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
NSLog(@"My token is: %@", deviceToken);
NSString* newToken = [deviceToken description];
newToken = [newToken stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
newToken = [newToken stringByReplacingOccurrencesOfString:@" " withString:@""];
NSString *urlString = [NSString stringWithFormat:@"http://myhost.com./filecreate.php?token=%@",newToken];
NSURL *url = [[NSURL alloc] initWithString:urlString];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
NSData *urlData;
NSURLResponse *response;
urlData = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:nil];
}
Run Code Online (Sandbox Code Playgroud)
任何建议都受到欢迎.
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
const char* data = [deviceToken bytes];
NSMutableString* token = [NSMutableString string];
for (int i = 0; i < [deviceToken length]; i++) { …
Run Code Online (Sandbox Code Playgroud) 我有一个问题,用户在卸载并重新安装我的应用程序后开始接收双重通知,因为设备向我的服务器发送了2个不同的APNS令牌 - 一个来自第一个安装,另一个来自重新安装应用程序.由于令牌不同,我不知道这是同一个设备.
在iOS 9问世之前,每次我卸载并重新安装应用程序时,我总是拥有相同的APNS,因此很容易知道这是用户以前使用的相同设备.从iOS 9开始,似乎每次安装都会更改APNS令牌.
我的问题是如何判断客户端是否卸载并重新安装应用程序,并更新其APNS令牌而不是添加新令牌?
我问,因为这听起来像大多数iOS开发人员必须处理的事情,但我找不到Apple如何解决这个问题的最佳做法,所以我希望其他人可以分享他们在这个问题上的经验.
我使用以下代码注册我的应用程序以接收推送通知,我收到警告,要求我注册推送通知,我不小心按下取消.现在我想再次发出警报,以便我可以触发委托方法以获取设备令牌.但是我不再收到此警报,每次打开设置时我都会发现应用程序的通知已关闭.我试图从设备删除应用程序,更改应用程序版本,删除测试配置文件,清理目标甚至我重置所有的iPhone设置,但仍然无法解决这个问题.我非常感谢任何帮助,谢谢
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeAlert |
UIRemoteNotificationTypeSound];
Run Code Online (Sandbox Code Playgroud) iphone push-notification apple-push-notifications devicetoken
我需要通过调用我的请求中需要JSON数据的服务,将我的iOS应用程序的APNS设备令牌发送给我的提供商.我正在阅读Apple的本地和推送通知编程指南,它只是说application:didRegisterForRemoteNotificationsWithDeviceToken:
委托方法传递设备令牌NSData
,你应该将它传递给以二进制数据编码的提供者.但是我需要将它转换为字符串才能向我的提供者发送JSON请求.
我也一直在阅读与此相关的几个帖子,因为它看起来是常见的情况,但我发现了一些不同的方法将这样的设备令牌转换为字符串来发送它,我不确定它们应该是哪个是最合适的.处理这个问题最可靠的方法是哪种?我想我的提供者需要将此字符串转换回调用APNS,并且我还需要将此令牌存储在应用程序中,以便在生成并application:didRegisterForRemoteNotificationsWithDeviceToken:
调用新令牌时安全地将其与新值进行比较,以发送令牌只有它已经改变了.
谢谢
我有一个在Parse上工作的应用程序,通知工作正常.我更改了应用程序打包,并在Parse上创建了一个新应用程序.
使用新的app,deviceToken和pushType列在表_Installation中始终保持为空,因此即使从Parse网页发送,推送也不起作用,并且在启动应用程序时生成新条目.
我已经在我的java代码和我的云代码上更新了解析密钥.
有人知道我可能错过了什么或可能发生什么,所以相同的代码在具有相同配置的不同应用程序中有不同的行为?
如果我使用pushType ="gcm"和"deviceToken"更新其中一个安装,那么我在另一个应用程序中使用该设备,该设备会收到通知.
谢谢
push-notification devicetoken parse-platform google-cloud-messaging
有没有办法确定设备令牌是沙盒还是分发?我们正在测试,应用程序有时会使用开发证书进行签名,而其他应用程序则使用临时证书(分发证书)进行签名.这是因为我们将应用程序传递给100个提供的临时测试设备中的一些,并且还为我们的设备构建开发签名应用程序.因为发送推送通知要求我们选择适当的推送服务器和pem文件,所以能够确定令牌是沙箱还是分发以便以适当的方式发送通知以便推送通知成功将是很好的.我们有时必须使用分发配置文件来签署我们的应用程序,因此测试推送通知系统需要我们正确地提供这些通知.
可能重复:
php中的pack().非法十六进制数字警告
我正在使用apple的推送通知服务,为了发送通知,您必须以二进制格式构建消息.我在下面的行中遇到以下错误:
警告:pack():类型H:非法的十六进制数字r
警告:pack():类型H:非法的十六进制数字y
注意:第130行的C:\ xampp\htdocs\firecom\FireComAPNS.php中的数组到字符串转换
这是抛出错误的代码行:
$msg = chr(0).pack('n', 32).pack('H*', $devicetoken).pack('n',strlen($payload)) . $payload;
Run Code Online (Sandbox Code Playgroud)
和
$devicetoken=773f5436825a7115417d3d1e036da20e806efeef547b7c3fe4da724d97c01b30
Run Code Online (Sandbox Code Playgroud)
我在互联网上搜索了很多,但我不知道如何搞乱二进制文件,任何有关正在发生的事情的帮助将不胜感激!
php binary runtime-error apple-push-notifications devicetoken
苹果文档对于设备的 deviceToken 何时可以更改有点模糊。防御性地编写代码并测试该代码是值得的。
我已经编写了我的应用程序,以便在启动时注册推送通知并处理didRegisterForRemoteNotificationsWithDeviceToken
回调。
我didRegisterForRemoteNotificationsWithDeviceToken
将最后一个设备令牌保存到用户默认值,如果令牌仍然相同,则继续。如果它根本没有保存的令牌,或者令牌不匹配,它会将新令牌上传到我们的服务器。
我还有一种机制,可以让我用人类可读的名称来命名我的测试设备,例如“4s_1”“5s_1”“5s_2”等。我有一个服务器命令行工具,它采用人类可读的设备名称,查找设备的从中查找“identifierForVendor”,然后使用标识符查找设备令牌。然后它会触发沙箱通知。
删除应用程序并重新安装似乎会导致“identifierForVendor”发生变化,但不会发生变化deviceToken
,这与我希望测试发生的情况完全相反。我想要一些永远不会改变的值来唯一标识测试设备,并更改设备令牌,以便我可以测试我的代码。
编辑:自从写这篇文章以来,我已经更改了应用程序以生成它自己的 UUID 并将其保存到钥匙串中,正如 Wain 在他的回答中所建议的那样。
有没有办法强制 Apple 的 APN 更改设备的令牌,以便我可以测试我的代码(客户端和服务器端)来处理令牌更改的情况?
我遇到了 Firebase Messaging,在阅读完指南后,他们在这里发布了: https: //firebase.google.com/docs/cloud-messaging/flutter/client,我能够获取用户的设备令牌。但是,本教程仅介绍使用 Firebase 控制台向设备发送测试消息的示例。给定(其他用户的)设备令牌,我如何从flutter应用程序中向另一个用户发送通知?是否有一个我可以运行的函数可以获取我不知道的设备令牌和通知正文?
android devicetoken firebase flutter firebase-cloud-messaging
我正在使用visual studio 2012在手机间隙+移动jquery中创建一个Windows Phone 8应用程序.我想从设备获取设备令牌ID以进行推送通知.任何人都可以指导我如何获得Windows Phone 8的设备令牌ID?