IOS 消息推送---服务端.p12证书的生成

举报
清雨小竹 发表于 2022/09/25 02:28:08 2022/09/25
【摘要】 在IOS 消息推送原理及实现总结中讲述了消息推送的原理及实现总结,但并未讲到Provider服务端及Client App客户端的实现,但我在这里只是简单讲述Provider服务端(JAVA实现)步骤如下:   一、  制作Provider服务端所需要的*.p12文件: 在IOS&nb...

IOS 消息推送原理及实现总结中讲述了消息推送的原理及实现总结,但并未讲到Provider服务端及Client App客户端的实现,但我在这里只是简单讲述Provider服务端(JAVA实现)步骤如下:

 

一、  制作Provider服务端所需要的*.p12文件:

IOS 消息推送原理及实现总结的图2-8中所展示的密钥、证书,我们并没有使用到它,那么为什么要展示出来呢,猜猜是为什么?为制作*.p12文件?哈哈,您猜对了,下面我们就利用它来制作*.p12文件,步骤:([MacBookà应用程序à实用工具à钥匙串访问[钥匙串:登录,种类:证书]à选择刚刚生成的证书(Apple Development IOS Services:*******)à菜单à文件à导出项目à[存储为:任意文件名(如:iPush),文件格式:默认(个人信息交换(.p12)]à输入密码以进行导出[密码:任意,验证:与密码同一]à输入MACBook登录密码à允许à最终生成。 关键步骤如图1-1

IOS 消息推送原理及实现总结(续)---- Provider(JAVA实现) - Milo - IOS  JAVA KEY

 1-1

二、  编写Client App客户端的关键代码,如下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

    self.window = [[[UIWindow allocinitWithFrame:[[UIScreen mainScreen]bounds]] autorelease];

    self.window.backgroundColor = [UIColor whiteColor];

    [self.window makeKeyAndVisible];

    //消息推送支持的类型

    UIRemoteNotificationType types =

    (UIRemoteNotificationTypeBadge

     |UIRemoteNotificationTypeSound

     |UIRemoteNotificationTypeAlert);

    //注册消息推送

    [[UIApplication sharedApplication]registerForRemoteNotificationTypes:types]; 

    return YES;

}

 

//获取DeviceToken成功

- (void)application:(UIApplication *)application

didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

{

    NSLog(@"DeviceToken: {%@}",deviceToken);

    //这里进行的操作,是将Device Token发送到服务端

}

 

//注册消息推送失败

- (void)application:(UIApplication *)application

didFailToRegisterForRemoteNotificationsWithError:(NSError *)error

{

    NSLog(@"Register Remote Notifications error:{%@}",[errorlocalizedDescription]);

}

 

//处理收到的消息推送

- (void)application:(UIApplication *)application

didReceiveRemoteNotification:(NSDictionary *)userInfo

{

    NSLog(@"Receive remote notification : %@",userInfo);

    UIAlertView *alert =

    [[UIAlertView allocinitWithTitle:@"温馨提示"

                               message:@"推送成功!"

                              delegate:nil

                     cancelButtonTitle:@"确定"

                     otherButtonTitles:nil];

    [alert show];

    [alert release];

}

 

三、编写Provider服务端关键代码,如下:

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

        {

            //从客户端获取的deviceToken

            String deviceToken = "3a20764942e9cb4c4f6249274f12891946bed26131b686b8aa95322faff0ad46";

            System.out.println("Push Start deviceToken:" + deviceToken);

            //定义消息模式

            PayLoad payLoad = new PayLoad();

            payLoad.addAlert("消息推送测试!");

            payLoad.addBadge(4);

            payLoad.addSound("default");

            //注册deviceToken

            PushNotificationManager pushManager = PushNotificationManager.getInstance();

            pushManager.addDevice("iPhone", deviceToken);

            //连接APNS

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

            int port = 2195;

            String path = "/Users/iMilo/Work.localized/iShop/project/service/iPush/";

            String certificatePath = (path + "src/ipush/iPush.p12");

            //certificatePath 步骤一中生成的*.p12文件位置

            String certificatePassword = "Love24mm";

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

            //发送推送

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

            pushManager.sendNotification(client, payLoad);

            //停止连接APNS

            pushManager.stopConnection();

            //删除deviceToken

            pushManager.removeDevice("iPhone");

            System.out.println("Push End");

        }

        catch (Exception ex)

        {

            ex.printStackTrace();

        }

    }

}

注意:如果Provider服务端为Objective-C实现的话,就不需要*.p12证书。下面给出网上的相应demo地址:

Provider服务端(JAVA实现):apns_iphone.zip

Provider服务端(Objective-C实现):PushMeBabySource.zip

文章来源: zzzili.blog.csdn.net,作者:清雨小竹,版权归原作者所有,如需转载,请联系作者。

原文链接:zzzili.blog.csdn.net/article/details/8332514

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。