美文网首页
iOS远程推送的实现

iOS远程推送的实现

作者: Double_Chen | 来源:发表于2017-12-11 20:56 被阅读25次

    远程推送是指服务端给客户端发送消息时,客户端能接收并且如果程序处于后台状态时还能弹出推送窗口,即使程序不在后台运行时也能进行推送,像微信、QQ那样。

    要实现远程推送,需要以下步骤:

    1.在工程项目的capabilites将Push Notifications打开,此时会在项目中生成一个entitlements文件


    屏幕快照 2017-12-11 20.45.15.png

    2.在appdelegate中申请推送权限

    //iOS10及以上系统申请方式
    UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
    //必须写代理,不然无法监听通知的接收与点击事件
    center.delegate = self;
    [center requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert) completionHandler:^(BOOL granted, NSError * _Nullable error) {
        if (!error && granted) {
            NSLog(@"用户点击允许,注册成功");
        }else {
            NSLog(@"用户点击不允许,注册失败");
        }
    }];
    
     //iOS8到iOS10系统申请方式
    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
    [application registerUserNotificationSettings:settings];
    

    3.在appdelegate中添加代码,以获取device token

    - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
    
    NSString *deviceString = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
    deviceString = [deviceString stringByReplacingOccurrencesOfString:@" " withString:@""];
    
    NSLog(@"deviceToken===========%@",deviceString);
    }
    
    //在这里接收远程推送的信息
    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    NSLog(@"iOS7及以上系统,收到通知:%@", userInfo);
    completionHandler(UIBackgroundFetchResultNewData);
    
    }
    

    4..申请一个push证书


    屏幕快照 2017-12-11 20.50.16.png

    5.准备完毕,开始模拟远程推送,下载第三方工具pusher,在钥匙串中将push证书导出p12文件,在pusher工具中导入,并且添加刚刚获取的device token,文本框内为push内容,可以直接使用进行测试,点击push,即可在手机端看到实现效果,注意,需要在真机上进行测试。

    屏幕快照 2017-12-11 20.55.07.png

    相关文章

      网友评论

          本文标题:iOS远程推送的实现

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