设为首页 加入收藏

TOP

iOS远程推送原理及实现过程(二)
2017-10-13 10:33:24 】 浏览:3113
Tags:iOS 远程 推送 原理 实现 过程
择我们刚才创建的 App ID

0094.png

0095.png 

这儿选择我们开发者的证书,如果不知道是哪个选择全部即可

0096.png 

这儿选择我们的测试设备,如果没有则在前面的Devices里面添加即可

0097.png 

0098.png

随便取个名字即可,然后下载下来

1123.png 

发布配置文件和开发配置文件一样创建,选择Distribution->Ad Hoc即可,后面与发布配置文件一样。

1125.png 

1126.png 

11250.png

证书配置完成,打开我们创建的应用项目

打开AppDelegate.m 文件,在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中添加下面代码,注册消息推送

 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
        /** 消息推送注册 */
    if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0) {
        
        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert categories:nil];
        [application registerUserNotificationSettings:settings];
        [application registerForRemoteNotifications];
    }else {
        [application registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
    }
    
    return YES;
}
下面方法是返回 ANPs 苹果推送服务器生成的唯一标识
/** 接收服务器传回的设备唯一标识 token */
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
    
    // 第一次运行获取到DeviceToken时间会比较长!
    // 将deviceToken转换成字符串,以便后续使用
    NSString *token = [deviceToken description];
    NSLog(@"description %@", token);
}

下面方法是当有消息推送回来时,接收推送消息    
/** 设备接收到来自苹果推送服务器的消息时触发的,用来显示推送消息 */

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{

    NSLog(@"userInfo == %@",userInfo);
}

上面方法是当注册推送服务失败时,接收错误信息
/** 注册推送服务失败 */
-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{
    NSLog(@"注册失败 %@",error);
}

 

 

 

服务器端(Java服务器)

服务器端我们需要,一个后缀为. p12的证书,以及需要的 jar 包

服务器端的证书生成方式:

打开我们前面下载的证书,在钥匙串中找到它

0.98888.png 

点击鼠标右键选择导出

0.998.png 

导出后缀为.p12的文件保存到自己的电脑上,需要输入一个密码,在 Java 服务器端要用到

0.9889.png 

Java服务器端需要的 Jar 包

0.87.png

Java 服务器端代码:

 

import javapns.back.PushNotificationManager;
import javapns.back.SSLConnectionHelper;
import javapns.data.Device;
import javapns.data.PayLoad;
public class pushService {
    public static void main(String[] args) {
           
           
          try {
                   String deviceToken = "eab6df47eb4f81e0aaa93bb208cffd7dc3884fd346ea0743fcf93288018cfcb6";
                   //被推送的iphone应用程序标示符      
                   PayLoad payLoad = new PayLoad();
                   payLoad.addAlert("测试我的push消息");
                   payLoad.addBadge(1);
                   payLoad.addSound("default");
                            
                   PushNotificationManager pushManager = PushNotificationManager.getInstance();
                   pushManager.addDevice("iphone", deviceToken);
                   
                                      //测试推送服务器地址:gateway.sandbox.push.apple.com /2195 
                     //产品推送服务器地址:gateway.push.apple.com / 2195 
                   String host="gateway.sandbox.push.apple.com";  //测试用的苹果推送服务器
                   int port = 2195;
                   String certificatePath = "/Users/hsw/Desktop/PushTest/PushTest.p12"; //刚才在mac系统下导出的证书
                   
                   String certificatePassword= "123456";
                  
                   pushManager.initializeConnection(host, port, certificatePath,certificatePassword, SSL
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇iOS- 利用AFNetworking3.0+(最新.. 下一篇iOS中的桥接方式

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目