`
apchy
  • 浏览: 60881 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

编写push notification之服务器端发送通知

    博客分类:
  • java
阅读更多

在编写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 文档

    本文档将详细介绍如何在iOS应用程序中使用Push Notification,包括工程的编写和服务器端的介绍。 一、创建SSL证书 为了使用Push Notification,需要创建一个App ID和关联的SSL证书。SSL证书是用于加密和身份验证的...

    苹果push的服务器端源码

    11. **PushMeBaby**:这个可能是源码包中的核心项目或库名,它可能是一个完整的服务器端解决方案,包含初始化、构建Payload、发送通知等功能。 总的来说,这份源码可以帮助开发者理解如何搭建和维护一个能够与苹果...

    Laravel开发-laravel-push-notification

    5. **发送通知**:使用包提供的服务发送通知,如`$pusher->send()`方法。此方法可以发送单个通知,也可以批量发送给多个设备。 6. **错误处理与调试**:在推送过程中,可能会遇到各种问题,如设备令牌无效、网络...

    ios移动社交app的客户端+webservice服务器端源码

    - **通知推送**:使用APNs(Apple Push Notification service)发送消息通知,保持用户互动。 4. **ColorsTrip相关**: - ColorsTrip可能是应用的名称,也可能代表某种特定功能,如多彩旅行分享、颜色主题等,...

    推送通知服务PushNotificationDem

    这种服务允许服务器端向客户端发送数据,即使应用在后台或完全关闭状态下也能接收到信息。这对于提供实时更新、提醒用户新消息或者活动的应用来说至关重要。 在Windows Phone 7平台上,微软提供了通知服务称为...

    Android-Push-Notifications-master_androidnotification_

    9. **消息分发与推送**: 在服务器端,开发者需要编写代码来发送FCM消息。这通常通过调用FCM API或使用第三方库如Firebase Admin SDK完成,需要提供设备的FCM令牌和要发送的消息内容。 10. **测试与调试**: 使用...

    Push Notifications by Tutorials (Swift 4.2)

    这种服务基于Apple Push Notification service (APNs),由服务器端发送,客户端接收。 在Swift 4.2中,实现推送通知涉及以下几个关键概念: 1. **注册推送通知**:应用必须先向APNs注册,获取设备令牌(Device ...

    simple Push

    3. **构建推送消息**:在服务器端,比如这里的“simplePush.php”,编写代码来构建推送消息,包括设备Token、通知内容、通知类型等。 4. **发送推送**:使用构建好的消息和证书,通过HTTP/2或WebSocket接口与APNs...

    Push Notifications by Tutorials v2.zip

    8. **远程通知的发送**:服务器端需要集成Apple Push Notification service (APNs)接口来发送推送通知。这通常涉及到获取设备的APNs令牌,并将其发送给服务器,以便服务器能够准确地向指定设备发送通知。 9. **静默...

    javapush消息推送

    JavaPush消息推送是一种在Java平台上实现的推送服务技术,它允许开发者向移动设备或Web应用实时发送通知或数据。在当今的移动应用开发中,消息推送已经成为提高用户体验、增加用户粘性的重要手段。通过JavaPush,...

    E4A配合易语言服务器发送推送消息例子源码

    标题中的“E4A配合易语言服务器发送推送消息例子源码”揭示了这是一个关于使用E4A(Easy4Android)和易语言开发的服务器端配合实现消息推送的示例项目。这个项目的主要目的是教给开发者如何在Android应用程序中集成...

    uni-app 中使用uni push的demo

    (2) API推送:开发者也可以通过调用uni.push.send接口发送推送,例如在服务器端使用HTTP API或者在客户端通过uni.request发送请求。 4. 消息类型与格式: uni-push支持自定义消息(data message)和通知消息...

    push-notification-demo

    8. **推送服务器**:实际的推送消息通常由服务器端通过Web Push协议发送。这可能涉及到第三方服务,如Firebase Cloud Messaging (FCM) 或者VAPID (Verifier Applications are Publicly Identified) 机制。 在这个...

    php ios push 脚本

    APNs是苹果提供的服务,允许应用程序向已安装该应用的iOS设备发送通知。要使用APNs,你需要获取到苹果颁发的证书,分为开发环境和生产环境两种,以便在对应环境下进行推送。 PHP iospush脚本主要涉及以下知识点: ...

    Java_React Native本地和远程通知.zip

    2. **配置推送服务**:对于远程通知,开发者需要在服务器端配置推送证书和服务端接口,以便发送推送消息。 3. **事件处理**:无论本地还是远程通知,应用都需要处理用户交互,如点击通知后打开特定页面。这通常涉及...

    Push_Notifications_by_Tutorials_v1.0 (Ray Wenderlich 出品)

    - 尊重用户隐私,避免过度发送通知。 - 提供个性化内容以增加用户参与度。 - 监控性能指标以优化用户体验。 #### 五、案例分析 书中通过多个实际案例展示了如何在不同的场景下有效使用推送通知。例如: - **...

    androidpn 服务端和android端源代码

    "AndroidPN 服务端和Android端源代码"是关于Android Push Notification(AndroidPN)系统的一套开源实现,它包括服务端和客户端两部分。这个项目主要用于帮助开发者实现在Android设备上进行远程消息推送,这对于实时...

    push-notification-demo:演示如何使用Firebase接收通知

    将此密钥添加到你的服务器端代码,以便当有新消息时,服务器可以发送消息到Firebase。 在React客户端,你需要监听FCM的事件以处理通知。这包括在用户设备上注册令牌,以及处理接收到的通知: ```javascript const ...

    app-push:该项目向移动应用程序发送通知

    【app-push: 向移动应用程序发送通知】 移动应用程序在当今数字化时代扮演着至关重要的角色,它们需要与用户保持实时互动,以提供个性化体验并增强用户粘性。这就是“app-push”服务的用武之地——它使得开发者能够...

    IOS消息推送总结

    在iOS平台上,Apple Push ...总之,iOS消息推送涉及多个环节,包括APNs服务的理解、证书的创建与管理,以及客户端代码的编写和服务器端的配合。掌握这些知识点,开发者就能够为iOS用户提供无缝、高效的推送通知体验。

Global site tag (gtag.js) - Google Analytics