美文网首页
iOS远程推送原理

iOS远程推送原理

作者: iOS_Ken | 来源:发表于2021-05-28 14:18 被阅读0次

    一.推送原理概要(iOS3.0以后引入的功能)

    当程序不在前台时,服务器推送消息给客户端

    image.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服务器更新了可能会变

    以下说明一下实现,首先配置好证书(发布证书和调试证书),和项目中的相关推送设置

    image.png

    代码实现部分

    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);
    }
    

    相关文章

      网友评论

          本文标题:iOS远程推送原理

          本文链接:https://www.haomeiwen.com/subject/fgnjsltx.html