Java服务器端如何接收IOS远程推送传递来的devicetoken

Java服务器端如何接收IOS远程推送传递来的devicetoken,第1张

您好,(1)下载前面建立的cer文件和provisioning文件,双击,导入到xcode中,在build setting中code signing一栏里选择这两个文件的名称,这样就可以将支持push的app部署到真机中。
(2)处理推送消息
客户端对推送消息的处理分两种情况:
一 在App没有运行的情况下,系统收到推送消息,用户点击推送消息,启动App。此时,不会执行前面提到的 didReceiveRemoteNotification函数,而是在App的applicationDidFinishLaunching函数中处理推送,通过以下代码可以获取推送消息中的数据: NSDictionary userInfo =[launchOptionsobjectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
二 当APP处于前台时,系统收到推送消息,此时系统不会d出消息提示,会直接触发application:(UIApplication )application didReceiveRemoteNotification:(NSDictionary )userInfo函数,推送数据在userInfo字典中。
当App处于后台时,如果系统收到推送消息,当用户点击推送消息时,会执行application:(UIApplication )application didReceiveRemoteNotification:(NSDictionary )userInfo函数,
此时AppDelegate中函数执行的顺序为:
applicationWillEnterForeground
application:didReceiveRemoteNotification
applicationDidBecomeActiveI

你们应该用到了跨域,才出现这个问题,前台app和后台不是一个域,所以每次的sessionid不一样,我不知道你们前台用的什么与后台交互的,ajax有一个属性是,withcredentials,把这个设置为true,sessionid就不会变了,这是第一种解决办法,
第二种就是用redis缓存,把信息放入redis也可以解决问题

我们在开发过程中,肯定会有和第三方或者app端的接口调用。在调用的时候,下面的方法可以来防止非法链接或者恶意攻击。

一、签名

  根据用户名或者用户id,结合用户的ip或者设备号,生成一个token。在请求后台,后台获取>

在使用Base64方式的编码后,Token字符串还是有20多位,有的时候还是嫌它长了。由于GUID本身就有128bit,在要求有良好的可读性的前提下,很难进一步改进了。那我们如何产生更短的字符串呢?还有一种方式就是较少Token的长度,不用GUID,而采用一定长度的随机数,例如64bit,再用Base64编码表示:

var rnd = new Random();
    var tokenData = userIp+userId;
    rndNextBytes(tokenData);
    var token = ConvertToBase64String(tokenData)TrimEnd('=');

由于这里只用了64bit,此时得到的字符串为Onh0h95n7nw的形式,长度要短一半。这样就方便携带多了。但是这种方式是没有唯一性保证的。不过用来作为身份认证的方式还是可以的(如网盘的提取码)。

二、加密

 客户端和服务器都保存一个秘钥,每次传输都加密,服务端根据秘钥解密。

 客户端:

  1、设置一个key(和服务器端相同)

  2、根据上述key对请求进行某种加密(加密必须是可逆的,以便服务器端解密)

  3、发送请求给服务器

服务器端:

  1、设置一个key

  2、根据上述的key对请求进行解密(校验成功就是「信任」的客户端发来的数据,否则拒绝响应)

  3、处理业务逻辑并产生结果

  4、将结果反馈给客户端

三、第三方支持

比如spring security-oauth


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13472332.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-13
下一篇 2023-08-13

发表评论

登录后才能评论

评论列表(0条)

保存