iOS 消息推送原理及简单实现

先说推送的原理,不废话先上图:


875923-20160127202521379-327347831.png

从图中可以很清楚的看出来推送的原理主要分为以下几步:
1.由App向iOS设备发送一个注册通知,用户需要同意系统发送推送。
2.iOS向APNs远程推送服务器发送App的Bundle Id和设备的UDID。
3.APNs根据设备的UDID和App的Bundle Id生成deviceToken再发回给App。
4.App再将deviceToken发送给远程推送服务器(自己的服务器), 由服务器保存在数据库中。
5.当自己的服务器想发送推送时, 在远程推送服务器中输入要发送的消息并选择发给哪些用户的deviceToken,由远程推送服务器发送给APNs。
6.APNs根据deviceToken发送给对应的用户。
· APNs 服务器就是苹果专门做远程推送的服务器。
·deviceToken是由APNs生成的一个专门找到你某个手机上的App的一个标识码。
· deviceToken 可能会变,如果你更改了你项目的bundle Identifier或者APNs服务器更新了可能会变。

再说一下简单实现,首先要去配置好证书,有调试和发布证书以及配置文件,这里不再细说。

1.必须先进行注册,得到用户授权

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // 1.获取推送通知的权限
        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge categories:nil];
        [application registerUserNotificationSettings:settings];
        
        // 2.注册远程推送
        [application registerForRemoteNotifications];
    return YES;
}

2.注册成功,接收从苹果服务器返回的唯一的设备token

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    NSMutableString * devices_token = [NSMutableString stringWithFormat:@"%@",deviceToken];
}

3.收到通知

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    NSLog(@"%@", userInfo);
}

4.注册推送失败原因

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
    NSLog(@"Registfail,注册推送失败原因%@",error);
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 极光推送: 1.JPush当前版本是1.8.2,其SDK的开发除了正常的功能完善和扩展外也紧随苹果官方的步伐,SD...
    Isspace阅读 11,715评论 10 16
  • 推送通知,是现在的应用必不可少的功能。那么在 iOS 中,我们是如何实现远程推送的呢?iOS 的远程推送原理又是什...
    皮皮瑞阅读 5,049评论 0 3
  • 该文章是我16年在公司博客上写的,除了证书注册的过程大致没有改变,像接收通知的方法都有所改变,所以将iOS 10 ...
    manger阅读 8,461评论 2 8
  • 转载 推送通知,是现在的应用必不可少的功能。那么在 iOS 中,我们是如何实现远程推送的呢?iOS 的远程推送原理...
    字节码阅读 4,090评论 1 4
  • 如题
    裴陟玉阅读 1,345评论 0 0