已注销用户的gravatar头像
已注销用户 2014-11-19 00:27:14

基于APNS苹果消息推送服务Java端和PHP端实现源代码分享

     最近 看了一下苹果消息推送 英文简称:APNS (Apple Push Notification Service)

它实现的原理 我就不BB了 原理就看百度百科吧 比我说的好多了,链接如下:http://baike.baidu.com/view/7087026.htm?fr=aladdin

    按照这个原理 我就做了一个特简单的demo 分享出来,希望可以帮到牛牛们!

    先上 PHP 端的代码 (php端的 很多地方都有 这里我借花献佛了 ...)

基于APNS苹果消息推送服务Java端和PHP端实现源代码分享

<?php

// Put your device token here (without spaces):
$deviceToken = '74314cc9e8f747e2fa96c2c1585c830cdf994de6b453ce9fa1c09ba396b2f9e9';


// Put your private key's passphrase here:密语
$passphrase = 'winyi';

// Put your alert message here:
$message = '您于2014年11月11日提交的信件已经回复';

////////////////////////////////////////////////////////////////////////////////

$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);

// Open a connection to the APNS server
$fp = stream_socket_client(
	'ssl://gateway.sandbox.push.apple.com:2195', $err,
	$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);

if (!$fp)
	exit("Failed to connect: $err $errstr" . PHP_EOL);

echo 'Connected to APNS' . PHP_EOL;

// Create the payload body
$body['aps'] = array(
	'alert' => $message,
	'sound' => 'default'
	);

// Encode the payload as JSON
$payload = json_encode($body);

// Build the binary notification
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;

// Send it to the server
$result = fwrite($fp, $msg, strlen($msg));

if (!$result)
	echo 'Message not delivered' . PHP_EOL;
else
	echo 'Message successfully delivered' . PHP_EOL;

// Close the connection to the server
fclose($fp);
    
?>

这个源码 我就不多说了 因为我也看的不是很懂 

我们主要看一下 里面有 deviceToken 和 passphrase 这两个是我们要关注的 

deviceToken :可以理解为是手机设备的唯一识别号

passphrase :私钥 

还有一个php 端代码 要的是 XXX.pem 证书 而Java端是 XXX.p12证书

还有一个特点是 php 端的代码 私钥可以为空 而java端是不可以的 这里有待考究 反正我实验的时候是不可以的

关于证书怎么生成的 大家自己百度吧 

下来看java端的吧

package com.sdunicom.iphone.apns;

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

public class MainSend {
	public static void main(String[] args) throws Exception {
		try {
			  String deviceToken = "189c1558c469d683a516a09be4c7851399f721747b89dc10161b5d9a82d2ee71";

			  PayLoad payLoad = new PayLoad();
			  payLoad.addAlert("hello zuidaima");
			  payLoad.addBadge(4);
			  payLoad.addSound("default");
						
			  PushNotificationManager pushManager = PushNotificationManager.getInstance();
			  pushManager.addDevice("iPhone", deviceToken);
						
			  //Connect to APNs
			  String host= "gateway.sandbox.push.apple.com";
			  int port = 2195;
			  String certificatePath= "F:/tinmanpush123.p12";
			  String certificatePassword= "tinmanpush123";
			  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();
		}
	}
}

java 端的和 php 端的源码都拷贝出来了

然后在改改 整理成一个方法 就ok了 具体的 需要的 下载我的源码看吧~ 

下面是项目运行截图

基于APNS苹果消息推送服务Java端和PHP端实现源代码分享

基于APNS苹果消息推送服务Java端和PHP端实现源代码分享

基于APNS苹果消息推送服务Java端和PHP端实现源代码分享

代码虽然简单 但是很实用的哦 有这方面的牛牛 需要就下载

前提是 你要有正确的 证书 和 deviceToken 以及 私钥 不然到时你下载了我的源码说运行不起来 又在骂娘了

好了 我把源码和需要的jar 都放在一起了 有需要的下载吧~


打赏

文件名:iphonePushDemo.rar,文件大小:2309.522K 下载
最代码最近下载分享源代码列表最近下载
peng2000  LV12 2021年2月15日
fileToken  LV1 2020年5月13日
shuixianzyy  LV4 2020年5月7日
最代码酒酒  LV20 2019年4月16日
n0th1n9  LV6 2017年12月8日
lanlanskys  LV1 2017年11月12日
sdbrk  LV14 2017年10月20日
rabbitlxf  LV1 2016年6月23日
thl1229  LV15 2015年6月17日
chiron  LV12 2015年2月12日
最代码最近浏览分享源代码列表最近浏览
kkkkioio  LV7 2023年7月5日
1441854423  LV2 2023年6月30日
张真狗  LV9 2023年6月9日
wuziayng1232  LV10 2023年6月1日
2410068425  LV23 2023年3月6日
生米的  LV10 2023年3月3日
好的好的  LV8 2022年7月13日
JohnnyZ  LV2 2022年5月24日
hshdhdbdb 2022年5月19日
暂无贡献等级
zzz957  LV2 2022年4月26日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友