推送服务器的编写

转载 2013年12月03日 11:03:51

编写push notification之获取device token中拿到device token以后,需要把token字符串发送给应用的服务器端,即provider。

provider将token号、通知内容、通知形式(比如是否弹出提示窗口、是否发声等)发送给苹果的服务器(apns)。

最简单的provider实现,其实就是通过证书,和苹果服务器建立安全连接(tsl或ssl),通过认证建立连接后,向苹果服务器发送符合苹果要求的数据流。

获得证书

苹果提供两种接入方式的证书:

  • developer,用于测试
  • production,用于产品

如果是内部测试,使用developer方式即可。

下载证书,通过ios provisioning portal:

这要求:

  • 登录的apple developer program帐号必须是级别最高的agent(这是针对企业帐号来说的,如果是个人帐号就无所谓了),agent帐号即创始帐号,否则看不到configure链接;
  • 必须经过configure操作,已经enable了developer和product。

然后进入configure链接,点击download按钮即可:

处理证书

如果是编写在mac下跑的objc程序,无需对证书做处理,可跳过这一步。

如果是在java下使用,需要把打证书用的私有专用密钥和上述的支持通知的证书(注意,不是iphone developer证书)合并导出。

生成证书:

点击存储的时候,会提示生成一个文件密码:

当然可以密码为空。

之后会提示:

这里需要输入mac登录用户的密码。

文件生成。

编写发送通知的实例

如果是编写mac代码,有一个现成的项目可用:PushMeBabySource

导入到xcode中,只需将:

deviceToken填写成设备的token字符串,另外,pathForResource改为上面图中的:

aps_developer_identity

另外,要把刚才获得证书步骤中下载的证书复制到xcode项目Resources目录下:

可以看到文件名和上面的pathForResource的参数一致。

之后运行程序就可以在设备上收到推送通知。

如果是用java编写,可以用第三方库,见:

http://code.google.com/p/javapns/

编写简单的发送通知代码:

import org.json.JSONException;

import javapns.back.PushNotificationManager;
import javapns.back.SSLConnectionHelper;
import javapns.data.Device;
import javapns.data.PayLoad;

public class Main {

    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
         PayLoad simplePayLoad = new PayLoad();
        // Get PushNotification Instance
         PushNotificationManager pushManager = PushNotificationManager.getInstance();
         // Link iPhone’s UDID (64-char device token) to a stringName
         pushManager.addDevice("iPhone", "00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ");
         simplePayLoad.addAlert("My alert message测试");
         simplePayLoad.addBadge(1);
         simplePayLoad.addSound("default");
         Device client = PushNotificationManager.getInstance().getDevice("iPhone");
         PushNotificationManager.getInstance().initializeConnection("gateway.sandbox.push.apple.com", 2195, "/home/ubuntu/mypush.p12", "password", SSLConnectionHelper.KEYSTORE_TYPE_PKCS12);
         PushNotificationManager.getInstance().sendNotification(client, simplePayLoad);

测试中文没有乱码问题。

编写比较复杂的使用示例(可以控制通知是否有提示窗口、是否有提醒声音):

  • aPayload.addBadge( 2),显示在手机应用图标上的数字
  • aPayload.addAlert(“软件版本有更新”),显示提示窗口文字
  • aPayload.addSound(“default.wav”),指定提示声音

另外,也可以使用php的第三方实现,比如:

http://code.google.com/p/php-apns

基本原理是启动一个php服务,监控memcacheq队列,如果有消息就发送给苹果服务器。

原文链接:http://marshal.easymorse.com/archives/3329


更多0

iOS实现服务器原生推送

iOS原生实现推送 一、iOS推送机制 Provider是给你手机应用发出推送消息的服务器,而APNS(Apple Push Notification Service)则是苹果消息推送服务器...
  • sinat_34380438
  • sinat_34380438
  • 2016年12月12日 14:14
  • 2179

26.app后端怎么架设推送服务

推送服务已经是app的标配了。架设推送服务,除了可以使用第三方服务商外,也有大量的开源技术可以选择。...
  • newjueqi
  • newjueqi
  • 2015年04月29日 21:24
  • 18951

自己搭建iOS 推送服务器

首页论坛博客学院招聘 Hi~   [ ]  [  注册  ] 热搜: 升级定位字体ipad聊天 帖子 AppCan交...
  • LANGZI7758521
  • LANGZI7758521
  • 2016年11月19日 10:42
  • 751

C# 服务端推送,十步十分钟,从注册到推送成功

目标展示 C# 服务端集成极光推送的步骤,多图少字,有图有真相。 使用极光推送, C# 服务端推送到 Demo App,Android 手机收到推送,整理为十个步骤,使用十分钟左右,完成从注册账号到...
  • jpush
  • jpush
  • 2017年03月21日 10:11
  • 1727

Web应用从服务器主动推送数据到客户端有哪些方式?

通常情况下,打开网页或app去查询或者刷新时,客户端向服务器发出请求然后返回数据,客户端与服务端对应的模式是: 客户端请求--服务端响应, 而在有些情况下,服务端会主动推送一些信息到客户端,例如:新闻...
  • shuo1992
  • shuo1992
  • 2017年03月02日 08:33
  • 1815

服务器推送技术常用的三个解决方案

服务器推送技术常用的三个解决方案,im消息服务架构
  • ligaofeng
  • ligaofeng
  • 2016年01月28日 17:02
  • 9222

个人开发者app消息推送简单实现思路

注:此文面向个人刚入门开发者。 最近新做了一个app,中午没事大脑在简单的思索者。。假如:我的这个app很火,用的人会很多,那么它就成了我的一个个人平台。如果我想让给广大用户推送一个新消息,该怎么办...
  • jiaozhurun
  • jiaozhurun
  • 2016年01月15日 11:31
  • 1046

使用Netty搭建APP推送服务器

调用时序图如下:源码:https://github.com/Aresyi/pushServer(1)获取socket登录秘钥(登录口令):key. key的时效为1分钟,如果客户端在拿到key后,1分...
  • LoveJavaYDJ
  • LoveJavaYDJ
  • 2016年08月17日 16:54
  • 6400

给你的Kindle做一个RSS推送服务器

有了Kindle ,自然是专心的看书啦,昨天找了一天的书,先推荐几个网站:万卷书 爱看豆 但是呢,爱看豆订阅杂志只能免费订阅2本,多了就要捐钱啦,半年33元,不是很贵,不过,像我这种穷学生么,还是找...
  • CAZICAQUW
  • CAZICAQUW
  • 2012年05月10日 22:46
  • 10182

飞鸽快信微信消息-LINUX服务器告警、状态监控预警、程序报警提醒等消息实时推送工具

一、产品介绍:飞鸽快信微信消息是一款基于微信的实时消息推送产品,可应用于服务器告警、LINUX服务器日志、状态监控异常提醒、阀值预警、程序报错报警提醒等场景,使用微信消息代替短信发送警告通知,实现精准...
  • ifeigecn
  • ifeigecn
  • 2016年12月19日 22:17
  • 369
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:推送服务器的编写
举报原因:
原因补充:

(最多只允许输入30个字)