iOS开发之远程推送

简介:

  说到远程推送,应该用的也挺多的,今天就基于SEA的云推送服务,做一个推送的小demo,来了解一下iOS中的远程推送是怎么一回事儿,首先你得有苹果的开发者账号,好咸蛋也差不多了,主要内容走起。

  一、准备阶段

    1.在苹果开发官网上申请推送证书之前需要一个名字叫做certSigningRequest文件。该文件在MAC系统中生成,用于在Apple网站上申请推送证书文件,下面是利用钥匙串生成该文件的步骤:

      (1).打开Mac下的钥匙串-》钥匙串访问-》证书助理-》从证书颁发机构请求证书,如下图所示:

 

      (2).经过上一步会出现下面的对话框,邮箱和名称随便填写,然后选择保存到磁盘,就可以在本地生成一个CertificateSigningRequest.certSigningRequest文件。如下图:

 

    2.去苹果开发者的网站上申请推送证书,步骤如下:

      (1)、用开发者账号登陆后,进入Member Center,入下图所示:

 

      (2)、进入member Center后点击下面截图的链接:

      (3)、注册一个支持推送的AppId,在identifiers下面的App IDs选项中点击添加按钮,添加一个新的AppIDs,入下图:

      (4)、填写你的AppId的名字

      (5)、绑定你应用的Bundle ID

 

      (6)、选中Push Notifications,使本AppID支持消息推送:

 

 

    3、用上面的AppID申请推送证书

     (1)、点击证书,选中开发模式,然后单选推送服务

 

      (2)、选中我们刚才创建的AppID,如下:

      (3)、上传我们刚才在本地用钥匙串创建的文件:

      (4)、接下来就可以下载并使用我们的推送证书了

    4、用我们的AppID创建一个Provisioning Profiles文件,如下:

 

    5.由上面的证书,生成php用的pem文件过程如下:

      (1).由钥匙串打开上面我们生成的CSR文件,单击右键导出p12文件,如下图:

      (2).设置访问密码:

      (3)、在终端下切换到存有刚才我们导出的p12文件夹下,进行命令行生成pem文件,命令行如下,合并的时候会让输入密码,密码就是我们上面设置的密码:

1 openssl pkcs12 -clcerts -nokeys -out a.pem -in aps_test_cer.p12
2 openssl pkcs12 -nocerts -out b.pem -in aps_test_key.p12
3 cat a.pem b.pem > end.pem

 

    6、将生成的end.pem文件上传到SAE上的云推送服务上即可,我们在SAE上可以通过文件的id进行访问:

    

  二、服务器端代码编写:

    SAE上云推送所用到的PHP代码如下:

<?php

$cert_id =你的证书序号;
$device_token = 你的deviceToken;
$message = "hello world";

//这个是简单的例子,更复杂的消息格式请查看苹果官方文档
$body = array(
    'aps' => array( 'alert' => $message)
);
$apns = new SaeAPNS();
//push消息到SAE推送服务器
$result = $apns->push( $cert_id , $body , $device_token );

if( $result && is_array($result) ){
    echo '发送成功';
    var_dump( $result );
} else {
    echo '发送失败';
    var_dump($apns->errno(), $apns->errmsg());
}

//查看消息发送的汇总信息,返回值包括当天发送成功的消息数,以及因各类原因发送失败的消息数。
$result = $apns->getInfo($cert_id);
if ($result === false) {
    echo "getInfo失败";
    var_dump($apns->errno(), $apns->errmsg());
} else {
    echo "getInfo成功";
    var_dump($result);
}

?>

 

  三、客户端代码如下:

    1.在Appdelegate中注册推送:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    //注册远程通知
    [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
    [application registerForRemoteNotifications];
    return YES;
}

  

    2.获取设备令牌的回调方法

//注册远程推送后获取设备令牌

-(void) application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
    
    NSLog(@"%@",deviceToken);
}

 

    3.注册错误回调的方法:

-(void) application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
    NSLog(@"%@",[error localizedDescription]);
}

 

    4.在Build Settings中的Code Signing中中我们的推送证书和描述文件

  到这儿,调用服务器上的php文件就可以给我们的设备发送通知了。

相关实践学习
基于小程序Serverless开发个人相册小程序
本场景基于小程序云Serverless+小程序开发者工具(IDE),快速搭建个人相册小程序
SAE的功能与使用入门
欢迎来到《SAE的功能与使用入门》,本课程是“云原生Serverless Clouder认证“系列中的第三阶段。课程将向您介绍阿里云Serverless应用引擎(SAE)服务相关的概念、特性与使用方式。通过课程将带您逐步深入探索Serverless世界,借助SAE服务,即使没有丰富的云计算和IT经验,也能够让开发人员在实际业务场景中便捷的掌握如何构建和部署应用程序,快速拥抱Serverless架构,将精力聚焦在应用代码和业务逻辑的实现上。 学习完本课程后,您将能够: 掌握Serverless应用引擎(SAE)的基本概念与核心优势 了解Serverless应用引擎(SAE)的核心功能 掌握使用Serverless应用引擎(SAE)的开发和部署流程 了解Serverless应用引擎(SAE)的适用场景和最佳实践 &nbsp;
相关文章
|
25天前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
80 3
|
3月前
|
存储 iOS开发
iOS 开发,如何进行应用的本地化(Localization)?
iOS 开发,如何进行应用的本地化(Localization)?
121 2
|
3月前
|
存储 数据建模 数据库
IOS开发数据存储:什么是 UserDefaults?有哪些替代方案?
IOS开发数据存储:什么是 UserDefaults?有哪些替代方案?
38 0
|
3月前
|
API 定位技术 iOS开发
IOS开发基础知识:什么是 Cocoa Touch?它在 iOS 开发中的作用是什么?
IOS开发基础知识:什么是 Cocoa Touch?它在 iOS 开发中的作用是什么?
42 2
|
3月前
|
安全 编译器 Swift
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
IOS开发基础知识: 对比 Swift 和 Objective-C 的优缺点。
89 2
|
3月前
|
API 开发工具 iOS开发
iOS 开发高效率工具包:10 大必备工具
iOS 开发高效率工具包:10 大必备工具
42 1
|
3月前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
52 1
|
2月前
|
监控 API Swift
用Swift开发iOS平台上的上网行为管理监控软件
在当今数字化时代,随着智能手机的普及,人们对于网络的依赖日益增加。然而,对于一些特定场景,如家庭、学校或者企业,对于iOS设备上的网络行为进行管理和监控显得尤为重要。为了满足这一需求,我们可以利用Swift语言开发一款iOS平台上的上网行为管理监控软件。
178 2
|
3月前
|
数据可视化 iOS开发
iOS 开发,什么是 Interface Builder(IB)?如何使用 IB 构建用户界面?
iOS 开发,什么是 Interface Builder(IB)?如何使用 IB 构建用户界面?
40 4
|
3月前
|
iOS开发
iOS开发解释 App 生命周期,包括各个阶段的调用顺序。
iOS开发解释 App 生命周期,包括各个阶段的调用顺序。
26 1