关于iOS推送

iOS的推送分为本地推送跟远程推送两种,远程推送通过APNs(Apple Push Notification service)实现。
一、远程推送
远程推送我大致总结为以下几步:
1.应用程序向APNS注册推送服务,在苹果官网的会员中心创建push证书,安装证书到钥匙串,生成描述文件。
2.获取APNS分配的deviceToken
3.把deviceToken发送到自己的后台服务器,服务器记录下每台设备的deviceToken以便日后推送信息给客户端。
4.服务器端向APNS发送消息,除了需要deviceToken之后,每次都需要push证书,因为苹果官方为了防止因deviceToken泄露而被恶意推送。如果服务器是java写的,可以直接可使用钥匙串导出的p12文件,如果是php写的,它不支持p12文件类型,所以需要转换为pem文件
5.APNS就可以根据deviceToken将推送消息发送到相应的设备。

相关代码如下:

- (void)addjPushWithapplication:(UIApplication *)application

  didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

   //远程推送初始化,注册远程推送

   [JPUSHService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |

                                                       UIUserNotificationTypeSound |

                                                       UIUserNotificationTypeAlert)

                                           categories:nil];


}


- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {

    

   //收到远程推送进行相应的数据处理

}


- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

{

    //此处获取到了APNS提供的deviceToken

}



二、本地推送

本地推送可以用于定时计划,比如定时喝水提醒,便可以在预定时间推送指定的水量喝水提醒。

-(void)test{

    UILocalNotification *localNotification = [[UILocalNotification alloc] init];

    if (localNotification == nil) {

        return;

    }

    //设置本地通知的触发时间(如果要立即触发,无需设置),这里设置为20妙后

    localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:20];

    //设置本地通知的时区

    localNotification.timeZone = [NSTimeZone defaultTimeZone];

    //设置通知的内容

    localNotification.alertBody = @"哈哈哈";

    //设置通知动作按钮的标题

    localNotification.alertAction = @"查看";

    //设置提醒的声音,可以自己添加声音文件,这里设置为默认提示声

    localNotification.soundName = UILocalNotificationDefaultSoundName;

    //设置通知的相关信息,这个很重要,可以添加一些标记性内容,方便以后区分和获取通知的信息

    NSDictionary *infoDic = @{@"id":@"9527"};

    localNotification.userInfo = infoDic;

    //在规定的日期触发通知

    [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

    //立即触发一个通知

  [[UIApplication sharedApplication] presentLocalNotificationNow:localNotification];

}

收到本地提醒时,会触发以下方法:

//接收本地推送

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification

{

   if ([[notification.userInfo objectForKey:@"id"isEqualToString:@"9527"]) {

        //处理指定的本地推送,处理相应的数据等等

    }

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值