[关闭]
@fiy-fish 2017-03-23T22:12:47.000000Z 字数 4218 阅读 1492

工作日志 2017-03-22 远程推送 swif闭包

工作日志


今天主要是两个知识点
1.swift 闭包
2.远程推送


swif 闭包


闭包的写法


闭包的其他知识


远程推送

  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  2. // 在iOS8之前注册远程通知的方法,如果项目要支持iOS8以前的版本,必须要写此方法
  3. UIRemoteNotificationType types = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert;
  4. [[UIApplication sharedApplication] registerForRemoteNotificationTypes:types];
  5. // iOS8之后注册远程通知的方法
  6. UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
  7. UIUserNotificationSettings *mySettings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
  8. [[UIApplication sharedApplication] registerUserNotificationSettings:mySettings];
  9. }
- 注册远程通知成功和失败的回调方法
  1. // 注册成功回调方法,其中deviceToken即为APNs返回的token
  2. - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
  3. [self sendProviderDeviceToken:deviceToken]; // 将此deviceToken发送给Provider
  4. }
  5. // 注册失败回调方法,处理失败情况
  6. - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
  7. }
- 接收到远程推送
方法1.didReceiveRemoteNotification, 只有程序在前台才会调用,程序在后台不会调用,当用户点击收到的推送信息时会调用。
当收到远程推送时,程序不是处于启动状态,推送信息会传递给方法application:willFinishLaunchingWithOptions: or application:didFinishLaunchingWithOptions:,当调用这两个方法时,可以取得推送消息:NSDictionary *pushInfor = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey];
  1. - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
  2. }
方法2:如下,如果下面的方法和上面的方法同时存在,只会执行下面的方法
  1. //这里采用可以后台操作的推送方法
  2. - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
  3. //APP 前台 收到远程推送都会调用
  4. //APP 后台 收到远程推送调用,(前提是 你开启了APP后台模式)
  5. //当用户点击推送信息进入APP 还会调用 这个方法
  6. //一定要实现 闭包UIBackgroundFetchResult 否则程序不会启动
  7. //在程序启动前,你有30秒的时间去在后台处理数据,刷新UI
  8. /*
  9. UIBackgroundFetchResultNewData, 接收到新数据
  10. UIBackgroundFetchResultNoData, 没有接受到数据
  11. UIBackgroundFetchResultFailed 接受数据失败
  12. */
  13. //必须执行这个block
  14. completionHandler(UIBackgroundFetchResultNewData);
  15. //接下来做 收到推送的处理
  16. }

  1. {
  2. "aps" : {
  3. "alert" : { // string or dictionary
  4. "title" : "string"
  5. "body" : "string",
  6. "title-loc-key" : "string or null"
  7. "title-loc-args" : "array of strings or null"
  8. "action-loc-key" : "string or null"
  9. "loc-key" : "string"
  10. "loc-args" : "array of strings"
  11. "launch-image" : "string"
  12. },
  13. "badge" : number,
  14. "sound" : "string"
  15. "content-available" : number;
  16. "category" : "string"
  17. },
  18. }
  19. aps:推送消息必须有的key
  20. alert:推送消息包含此key值,系统就会根据用户的设置展示标准的推送信息
  21. badge:在app图标上显示消息数量,缺少此key值,消息数量就不会改变,消除标记时把此key对应的value设置为0
  22. sound:设置推送声音的key值,系统默认提示声音对应的value值为default
  23. content-available:此key值设置为1,系统接收到推送消息时就会调用不同的回调方法,iOS7之后配置后台模式
  24. categoryUIMutableUserNotificationCategory's identifier 可操作通知类型的key值
  25. title:简短描述此调推送消息的目的,适用系统iOS8.2之后版本
  26. body:推送的内容
  27. title-loc-key:功能类似title,附加功能是国际化,适用系统iOS8.2之后版本
  28. title-loc-args:配合title-loc-key字段使用,适用系统iOS8.2之后版本
  29. action-loc-key:可操作通知类型key值,不详细叙述
  30. loc-key:参考title-loc-key
  31. loc-args:参考title-loc-args
  32. launch-image:点击推送消息或者移动事件滑块时,显示的图片。如果缺少此key值,会加载app默认的启动图片。
  1. {
  2. "aps" : {
  3. "alert" : "Provider push messag.",
  4. "badge" : 9,
  5. "sound" : "toAlice.aiff"
  6. },
  7. "Id" : 1314, // 自定义key值
  8. "type" : "customType" // 自定义key值
  9. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注