APNsios 推送 devicetoken token是字符串还是64位的16进制数

APNs device token是字符串还是64位的16进制数? - 知乎2被浏览673分享邀请回答01 条评论分享收藏感谢收起iOS的通知(notifications)有两种形式:
push notifications,从iOS3开始就有了,由远程服务器发起通知
local notifications,从iOS4开始支持,由本地应用发起的通知
两种通知都是为了提醒用户后台执行的应用有了变化。从用户角度来看,效果是一样的,都是通知。只是实现的方式不一样,对于技术实现来说。
本文主要说明push notification的device token的步骤。
可以通过和对push notification有个原理上的了解。
设备的准备
首先要知道,push notification只能在真机上运行的,无法在模拟器上使用,如果在模拟器上运行,在注册设备的时候会有类似如下报错:
Error in registration. Error: Error Domain=NSCocoaErrorDomain Code=3010 "remote notifications are not supported in the simulator" UserInfo=0x5d249d0 {NSLocalizedDescription=remote notifications are not supported in the simulator}
真机也要注意,如果没有越狱,没有问题。越狱的话,比如通过blacksnOw,因为没有经过iTunes,无法生成有效的设备证书(device certificate),因此注册的时候不会成功。
检查越狱版本是否可用,可以ssh到设备上,执行命令:
ls /var/mobile/Library/Preferences/com.apple.apsd.plist& -l
-rw&&- 1 mobile mobile&119&Aug 24 19:21 /var/mobile/Library/Preferences/com.apple.apsd.plist
返回的文件大小是119,就没有问题。
获取device token的原理
在说操作步骤之前,先说一下获取device token的一些原理方面的事情。
device token,即设备令牌,不是系统唯一标识(见),需要在应用启动时发起到apple服务器请求,注册自己的设备和应用,并获得这个device token。
device token有什么用?如果应用需要push notification给手机,那么它要有个服务器端(provider),但是它发出的信息不是直接给手机的,而是必须统一交给apple的服务器,这个服务器就是apple push notification server(apns)。apple服务器通过这个token,知道应用要发的消息是给哪个手机设备的,并转发该消息给手机,手机再通知应用程序。
获取device token的操作步骤
这里主要参照了这篇文章:
该文档很详细,照做就应该没有问题。
需要注意的是identifier一定要和provision portal profile中的app id一致,即:
另外,要确保设备绑定的是唯一的profile:
编写代码,是在AppDelegate中增加两个方法:
didRegisterForRemoteNotificationsWithDeviceToken:当应用第一次运行的时候,ios获取到device token后调用,用于注册设备到apns上之后的操作(比如将device token通知应用的服务器端provider)
didFailToRegisterForRemoteNotificationsWithError:如果注册的时候失败,ios会调用这个方法,可以打印一些报错日志或者提醒用户通知不可用
另外,有一个方法需要增加内容,主要是打印日志,说明是否已经注册:
#import "ApplePushNotificationAppDelegate.h"
#import "ApplePushNotificationViewController.h"
@implementation ApplePushNotificationAppDelegate
@synthesize viewC
- (void)applicationDidFinishLaunching:(UIApplication *)application {
[window addSubview:viewController.view];
[window makeKeyAndVisible];
NSLog(@"Registering for push notifications...");
[[UIApplication sharedApplication]
registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeAlert |
UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeSound)];
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
NSString *str = [NSString
stringWithFormat:@"Device Token=%@",deviceToken];
NSLog(str);
- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {
NSString *str = [NSString stringWithFormat: @"Error: %@", err];
NSLog(str);
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
for (id key in userInfo) {
NSLog(@"key: %@, value: %@", key, [userInfo objectForKey:key]);
- (void)dealloc {
[viewController release];
[window release];
[super dealloc];
第一次运行带注册方法的应用,会看到类似这样的提示窗口:
然后,在日志中看到类似下面的日志,主要是看到打印出device token的64位字符串,就说明成功了。
本文已收录于以下专栏:
相关文章推荐
iOS的通知(notifications)有两种形式:
push notifications,从iOS3开始就有了,由远程服务器发起通知local notifications,从iOS4开始支持...
iOS的通知(notifications)有两种形式:
push notifications,从iOS3开始就有了,由远程服务器发起通知local notifications,从iOS4开始支持...
/content/12/762.shtml
先简单介绍下push的机制
客户端通过
(void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types...
稍后放出。。。
怎样编写Apple Push Notification服务器
iPhone OS 3.0一个引入注目的新特性是push notifications(推送通知),它允许向已安装相关应用程序的各设备直接...
from: /blog/982149
编写push notification之服务器端发送通知
在编写push not...
原文地址(英文版)://how-to-build-an-apple-push-notification-provider-serve...
转自:/archives/3329
在编写push notification之获取device token中拿到device token...
怎样编写Apple Push Notification服务器
转载自:http://www./%E7%BC%96%E7%A8%8B/%E6%80%8E%E6%A0%B7%...
他的最新文章
讲师:刘文志
讲师:陈伟
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)【图片】如何检测IOS的deviceToken是否有效【java吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:659,105贴子:
如何检测IOS的deviceToken是否有效收藏
急.后台是用JAVA写的.
消息推送.试过三种方式 第一种:JAVAPNS 方式
javapns-jdk16-2.3包第二种:notnoop.apns 方式第三种:网上开源的一位大神根据 notnoop.apns 写出来的IOS 后台推送.dbay.apns4j三种方式都试过了. 都是反馈
Invalid token
都是说deviceToken 无效.问题是搞IOS的给我的 devicetoken 说没问题.
长度64位字符串.我怎么检查这个devicetoken 是有效还是无效?? 现在就是不知道到底是devicetoken 是有效无效
还是我后台推送服务器有问题.网上查询了很多,有说什么ios给的是64位的. 后台需要转换成32位的??急!!!!
在线等.....
2017java学习来上市公司博为峰学java,入学即签就业协议,不就业不收费,查看java课程!java好学吗?java课程来博为峰学,java工程师就业年薪十几万!
这个问题弄了几天了.
百度提问没人鸟.
希望贴吧里面有大神在.
@我是悲情反派控@于春停
@纯金键盘贴吧前十大神在么....
我想.今天好像都放中秋假回去了.苦逼的我还在敲代码........没人看偶尔来人工置顶.
叫iOS转成字符串传给你,记得叫他把空格去掉。
后台不用转,直接是客户端给过来用的
检查不了吧
app直接把token传你,你直接扔给apns就行了
你是怎么收到反馈
Invalid token 的 ??我怎么都没有反馈呢?
登录百度帐号推荐应用

我要回帖

更多关于 ios devicetoken 的文章

 

随机推荐