iOS开发之(APNS)远程推送实现,证书与真机调试

http://www.skyfox.org/ios-apns-use-and-debug.html

远程推送通知

什么是远程推送通知

顾名思义,就是从远程服务器推送给客户端的通知(需要联网)远程推送服务,又称为APNs(Apple Push Notification Services)

为什么需要远程推送通知

  • 传统获取数据的局限性 只要用户关闭了app,就无法跟app的服务器沟通,无法从服务器上获得最新的数据内容
  • 远程推送通知可以解决以上问题 不管用户打开还是关闭app,只要联网了,都能接收到服务器推送的远程通知

远程推送通知使用须知

  • 所有的苹果设备,在联网状态下,都会与苹果的服务器建立长连接 什么是长连接 只要联网了,就一直建立连接
  • 长连接的作用 时间校准 系统升级 查找我的iPhone .. ...
  • 长连接的好处 数据传输速度快 数据保持最新状态

推送原理

技术分享

Provider就是我们公司的服务器,经过苹果的APNs服务器找到我们的设备,给我们设备上的客户端应用推送消息。那 APNs服务器是如何找到我们的设备和设备上的应用呢,答案就是DeviceToken,DeviceToken需要配置推送证书才可以获得,推送证书需 要知道我们的APP ID(应用的BundleID,应用唯一标识)和UDID(设备唯一标识),还有自己服务器的UDID,我们先来打一个推送证书,登录开发者中心,点击证 书模块

技术分享

点击iOS Apps的证书

技术分享

进入这样的界面

技术分享

点击App IDs,然后点右上角的加号

技术分享

箭头所指为应用ID描述,我们假设写了一个很牛逼的应用,ExcitedApp,接下来我们填入App ID,注意这里的App ID是固定的,不能有星号

技术分享

接下来我们添加App所需要的服务,然后点击Continue

技术分享

一直点击下一步,完成,在App IDs 列表里面找到我们的ExcitedApp,我们看到

技术分享

发现Push服务是黄色警告,这时点击Edit,找到推送模块,我们需要配置推送证书了,点击红色箭头所指的位置

技术分享

我们需要一个CSR文件,CSR是一个签名请求文件,意思就是让我们的MAC具有调试推送的权限,点击继续

技术分享

点击了继续我们看到

技术分享

然后我们打开Mac上的钥匙串,从证书颁发机构请求证书

技术分享

前两个随便写,最后选择存到磁盘

技术分享

完成之后,接下来我们就可以添加CSR文件了

技术分享

添加完,选择生成

技术分享

证书配好了,下载下来

技术分享

配好了!

技术分享

顺带着我们把发布的证书也给配了,步骤都一样

打开我们刚刚下载的证书,添加到钥匙串中

技术分享

终于能开始整我们的项目了,快哭了都

技术分享

 

不要忘记修改bundle id 这里还要搞一个真机调试的证书才可以

真机调试的东西这里不累述,搞了这么多东西,我们终于可以拿到DeviceToken了

在AppDelegate.m中注册推送

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- ( BOOL ) application : ( UIApplication * ) application didFinishLaunchingWithOptions : ( NSDictionary * ) launchOptions {
    
       if ( [ [ [ UIDevice currentDevice ] systemVersion ] floatValue ] >= 8.0 ) {
         UIUserNotificationType myTypes = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound ;
         UIUserNotificationSettings *settings = [ UIUserNotificationSettings settingsForTypes :myTypes categories :nil ] ;
         [ [ UIApplication sharedApplication ] registerUserNotificationSettings :settings ] ;
     } else
     {
         UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound ;
         [ [ UIApplication sharedApplication ] registerForRemoteNotificationTypes :myTypes ] ;
     }
    
 
     return YES ;
}
1
2
3
4
- ( void ) application : ( UIApplication * ) application didRegisterForRemoteNotificationsWithDeviceToken : ( NSData * ) deviceToken
{
     NSLog ( @"%@" , deviceToken ) ;
}

 

1
2
3
4
5
6
7
//ios8 另外增加以下方法
#ifdef __IPHONE_8_0
- ( void ) application : ( UIApplication * ) application didRegisterUserNotificationSettings : ( UIUserNotificationSettings * ) notificationSettings
{
     [ application registerForRemoteNotifications ] ;
}
#endif

 

DeviceToken处理流程

技术分享

 

接下来我们用SmartPush来测试一下我们的推送:https://github.com/shaojiankui/SmartPush

smartpush

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值