前提准备,

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

对于越狱手机获取不到 device token的可以通过cydia安装pushdoctor,安装方法可以google一下在这就不多说了,我的越狱手机通过安装push补丁可以获取token了。

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代码,有一个现成的项目可用:http://stefan.hafeneger.name/download/PushMeBabySource.zip

导入到xcode中,只需将:

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

aps_developer_identity

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

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

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

第三方依赖包(下载在下面):

bcprov-jdk16-145-1.jar

commons-io-2.0.1.jar

commons-lang-2.5.jar

log4j-1.2.16.jar

javapns-jdk16-163.jar

java代码:

package com.sdunisi.iphone.apns.send;

import java.util.HashMap;

import java.util.Iterator;

import javapns.back.PushNotificationManager;

import javapns.back.SSLConnectionHelper;

import javapns.data.Device;

import javapns.data.PayLoad;

public class MainApnsSend {

public static void main(String[] args) throws Exception {

try {

String deviceToken = "e775b5892f3334427c14def8aa4d8189a4ec1c795020072f4baa7ee92e50b1db";//iphone手机获取的token

PayLoad payLoad = new PayLoad();

payLoad.addAlert("我的push测试");//push的内容

payLoad.addBadge(1);//图标小红圈的数值

payLoad.addSound("default");//铃音

PushNotificationManager pushManager = PushNotificationManager.getInstance();

pushManager.addDevice("iPhone", deviceToken);

//Connect to APNs

/************************************************

测试的服务器地址:gateway.sandbox.push.apple.com /端口2195

产品推送服务器地址:gateway.push.apple.com / 2195

***************************************************/

String host= "gateway.sandbox.push.apple.com";

int port = 2195;

String certificatePath= "/Users/jcjc/Desktop/push_p.p12";//导出的证书

String certificatePassword= "sunlg";//此处注意导出的证书密码不能为空因为空密码会报错

pushManager.initializeConnection(host,port, certificatePath,certificatePassword, SSLConnectionHelper.KEYSTORE_TYPE_PKCS12);

//Send Push

Device client = pushManager.getDevice("iPhone");

pushManager.sendNotification(client, payLoad);

pushManager.stopConnection();

pushManager.removeDevice("iPhone");

}

catch (Exception e) {

e.printStackTrace();

}

}

}

附件下载

依赖包 [attachment=19162]

java苹果推送_iphone 推送通知 java 实现相关推荐

  1. 亲手教会你如何用苹果ios应用的推送

    1. 什么是推送通知 消息通知分本地通知和远程推送通知,是没有运行在前台的应用程序可以让它们的用户获得相关消息通知的方式.消息通知可能是一条消息,即将发生的日历事件,或远程服务器的新数据.当被操作系统 ...

  2. java服务端的 极光推送

    项目中用到了极光推送  下面写下笔记 首先引入jar包   下载地址https://docs.jiguang.cn/jpush/resources/(非maven项目的下载地址) <depend ...

  3. 极光推送经验之谈-Java后台服务器实现极光推送的两种实现方式

    转载自 https://www.cnblogs.com/V1haoge/p/6439313.html 原创作品,可以转载,但是请标注出处地址http://www.cnblogs.com/V1haoge ...

  4. app推送以及提示音java,springboot 整合 Jpush 极光推送

    产品简介: JPush 是经过考验的大规模 App 推送平台,每天推送消息数超过 5 亿条. 开发者集成 SDK 后,可以通过调用 API 推送消息.同时,JPush 提供可视化的 web 端控制台发 ...

  5. java集成jpush实现客户端推送

    代码地址如下: http://www.demodashi.com/demo/13700.html 前言 java 集成jpush 实现客户端推送 ###一.准备工作 开发环境: jdk1.6 Ecli ...

  6. java接口推送_推送API

    推送API 代码示例 推送API,GitHub示例点此查看 简述 个推为开发者提供了如下3种消息推送方式: toSingle :简称"单推",指向单个用户推送消息 toList:简 ...

  7. 小米杀不死的消息推送-- Android、java后端同时接入小米推送

    作者简介 微信公众号(高质量文章推送):陈博易 前言 小米手机选择小米推送的原因:App进程被杀死的情况下,小米手机上的小米推送服务并不会被杀死(除非用户手动在设置中关闭了该推送的权限),所以我选择给 ...

  8. 极光推送集成厂商通道(java)

    极光推送后台开发文档:https://docs.jiguang.cn//jpush/server/push/rest_api_v3_push/ 跟安卓商量好,只能启用安卓端已经集成的厂商通道: 以下封 ...

  9. java实现百度站长主动推送个人网站链接

    个人博客已经更新欢迎来访:www.stopping.top 一.百度站长链接提交 链接提交工具是网站主动向百度搜索推送数据的工具,本工具可缩短爬虫发现网站链接时间,网站时效性内容建议使用链接提交工具, ...

最新文章

  1. 收到2013年51cto限量版精美台历
  2. 伍迷创意随想集 之 烧菜小帮手
  3. python爬虫程序-Python网络爬虫实战(一)快速入门
  4. 驱动06.触摸屏驱动程序
  5. python中的 descriptor
  6. 获取组织分类后群数据
  7. vnc远程桌面很慢_服务器远程桌面连接很慢
  8. 【已解决】bootstrap table 参数后台获取不到
  9. Windows Insider 最新重大升级
  10. CSDN自定义模块简单设置之——添加图片、文字、链接等
  11. 《模式识别》期末考试考题汇总带答案
  12. 使用Arduino开发ESP32(15):模块基本信息与复位原因获取
  13. 2021-03-28
  14. C++ 小游戏 视频及资料集(十)
  15. Unity3d Platformer Pro 2D游戏开发框架使用教程
  16. kube-apiserver启动时报错并且不能操作etcd
  17. 【Monkey测试】Monkey测试详解
  18. 【Python】5行代码采集3000+上市公司信息
  19. 科技云报道:全面云化时代,企业需要怎样的云安全能力?
  20. 让阿里再次伟大--钉钉如何长成独角兽的?

热门文章

  1. 2549 自然数和分解
  2. Omi原理-Hello Omi
  3. 谷歌浏览器插件批量下载OMI数据方法
  4. teamviewer有linux安装教程,如何在Ubuntu 18.04上安装TeamViewer
  5. FLASH W74M12JWSSIQ_W25Q64FWZPIG规格,存储器
  6. spring boot 启动出现错误(包扫描出错)
  7. C 结构体指针初始化
  8. 《我的助理辞职了》读后感
  9. 软件工程驻足篇章:第十七周和BugPhobia团队漫长的道别
  10. quic-ns-3 安装配置过程【存档】