以前看过,一段时间就忘了。关键是配置和导出证书,还有开发和产品的证书是分开的,不能合并。
在编写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代码,有一个现成的项目可用:http://stefan.hafeneger.name/download/PushMeBabySource.zip
导入到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队列,如果有消息就发送给苹果服务器。
分享到:
相关推荐
本文档将详细介绍如何在iOS应用程序中使用Push Notification,包括工程的编写和服务器端的介绍。 一、创建SSL证书 为了使用Push Notification,需要创建一个App ID和关联的SSL证书。SSL证书是用于加密和身份验证的...
"苹果PUSH的服务器端源码"提供了实现这一功能的后端代码,主要使用Objective-C和C++语言编写。这个源码包可能包含以下关键知识点: 1. **苹果推送通知服务(APNs)**:Apple Push Notification service 是苹果提供...
"laravel-push-notification"项目是针对Laravel框架的一个扩展包,专门用于向移动设备发送推送通知,支持Apple Push Notification (APN)服务和Google Cloud Messaging (GCM)服务,这两种服务分别用于iOS和Android...
- **通知推送**:使用APNs(Apple Push Notification service)发送消息通知,保持用户互动。 4. **ColorsTrip相关**: - ColorsTrip可能是应用的名称,也可能代表某种特定功能,如多彩旅行分享、颜色主题等,...
9. **消息分发与推送**: 在服务器端,开发者需要编写代码来发送FCM消息。这通常通过调用FCM API或使用第三方库如Firebase Admin SDK完成,需要提供设备的FCM令牌和要发送的消息内容。 10. **测试与调试**: 使用...
这种服务允许服务器端向客户端发送数据,即使应用在后台或完全关闭状态下也能接收到信息。这对于提供实时更新、提醒用户新消息或者活动的应用来说至关重要。 在Windows Phone 7平台上,微软提供了通知服务称为...
这种服务基于Apple Push Notification service (APNs),由服务器端发送,客户端接收。 在Swift 4.2中,实现推送通知涉及以下几个关键概念: 1. **注册推送通知**:应用必须先向APNs注册,获取设备令牌(Device ...
3. **构建推送消息**:在服务器端,比如这里的“simplePush.php”,编写代码来构建推送消息,包括设备Token、通知内容、通知类型等。 4. **发送推送**:使用构建好的消息和证书,通过HTTP/2或WebSocket接口与APNs...
8. **远程通知的发送**:服务器端需要集成Apple Push Notification service (APNs)接口来发送推送通知。这通常涉及到获取设备的APNs令牌,并将其发送给服务器,以便服务器能够准确地向指定设备发送通知。 9. **静默...
4. **消息构建与分发**:在服务器端,开发者需要编写Java代码来构建推送消息,包括设置消息类型、标题、内容、目标设备等信息。然后,服务器会根据消息的目标设备类型选择对应的消息协议进行发送。 5. **客户端处理...
标题中的“E4A配合易语言服务器发送推送消息例子源码”揭示了这是一个关于使用E4A(Easy4Android)和易语言开发的服务器端配合实现消息推送的示例项目。这个项目的主要目的是教给开发者如何在Android应用程序中集成...
(2) API推送:开发者也可以通过调用uni.push.send接口发送推送,例如在服务器端使用HTTP API或者在客户端通过uni.request发送请求。 4. 消息类型与格式: uni-push支持自定义消息(data message)和通知消息...
在IT行业中,推送服务是移动应用开发者不可或缺的一部分,特别是对于iOS平台的应用,为了实时通知用户,需要使用苹果的Push Notification Service(简称APNs)。而PHP作为广泛应用的服务器端脚本语言,可以用来创建...
8. **推送服务器**:实际的推送消息通常由服务器端通过Web Push协议发送。这可能涉及到第三方服务,如Firebase Cloud Messaging (FCM) 或者VAPID (Verifier Applications are Publicly Identified) 机制。 在这个...
2. **配置推送服务**:对于远程通知,开发者需要在服务器端配置推送证书和服务端接口,以便发送推送消息。 3. **事件处理**:无论本地还是远程通知,应用都需要处理用户交互,如点击通知后打开特定页面。这通常涉及...
**推送通知**是一种服务器端向客户端发送消息的技术。在iOS中,这通常涉及到Apple Push Notification Service (APNs)。对于开发者而言,正确地集成和管理推送通知是提升用户参与度、提高应用留存率的关键手段之一。 ...
"AndroidPN 服务端和Android端源代码"是关于Android Push Notification(AndroidPN)系统的一套开源实现,它包括服务端和客户端两部分。这个项目主要用于帮助开发者实现在Android设备上进行远程消息推送,这对于实时...
将此密钥添加到你的服务器端代码,以便当有新消息时,服务器可以发送消息到Firebase。 在React客户端,你需要监听FCM的事件以处理通知。这包括在用户设备上注册令牌,以及处理接收到的通知: ```javascript const ...
例如,使用Java编写的服务器可以与Google的Firebase Cloud Messaging (FCM) 或Apple的Push Notification Service (APNs) 进行交互,发送消息到目标设备。 4. **使用Firebase Cloud Messaging (FCM)** FCM是Google...
在iOS平台上,Apple Push ...总之,iOS消息推送涉及多个环节,包括APNs服务的理解、证书的创建与管理,以及客户端代码的编写和服务器端的配合。掌握这些知识点,开发者就能够为iOS用户提供无缝、高效的推送通知体验。