新普金娱乐网址


【iOS】7.4 定位服务->2.地理1.2 定位 – 官方框架CoreLocation: CLLocationManager(地方管理器)

想去冰岛旅行,不看资深玩家攻略怎行!

iOS开发 iOS10推送一定要看(基础篇)

  • 二月 27, 2019
  • 地理
  • 没有评论

关爱一航教育学与方法每天都奇异

iOS10翻新之后,推送也是做了一些相当小修改,上面笔者就给我们仔细说说。希望看完自家的那篇作品,对我们享有扶助。

雨齐2017.04.10点击目录翻开往期美观

壹 、简单入门篇—看完就足以总结适配完了

相对简单的推送证书以及环境的难题,小编就不在那里讲啊,作者在此地说的,是指原有工程的适配。

1.第1我们必要开拓下边包车型大巴开关。全数的推送平台,不管是极光依然如何的,要想接收推送,那个是必须打开的呦~

QQ20160914-4.png

此后,系统会转移1个大家在此之前没见过的文书,如图:

图片 1

QQ20160918-0.png-5.8kB

图片 2

QQ20160918-1.png-26.3kB

想必爆发的标题:此前有对象反映过,将开发环境由 development 变成
production ,在开关那里会时有产生错误,如图:

图片 3

QQ20160918-2.png-26.4kB

一经大家点击Fix issue之后,会惊讶的意识,APS Environment由
production 又变成 development 了。

恩施徒步(三月1二十四日~八月30日)(后记)

消除办法:作者的提出是不做任何修改。

因而小编的测试,打包之后,生成的ipa包内,是从未有过那么些.entitlements
文件的。经过测试,小编发现是足以符合规律收到推送消息的。测试的格局如下,大家也能够测试一下。

第七天(4月6日)阴

   
后天是返程的生活,全体的行程在今日都走完了。当先50%人都乘同一车的班次(D2218)的高铁回沪,票上时间是9:55
,由于是过路车,实际上车时间是10:34。

     
后天通告中午八点吃早饭,一大早就跟老朱出去想买点吃的在路上吃。他也有早起的习惯。这一次全程都以跟他一间客房,他是统领火柴的领导,一个人和颜悦色的中共总支部委员会部书记记。几天相处下去,没有架子,亲和力很强,好相处,比笔者有生之年五周岁,是本次年龄排名第①。外表看,比其实年龄要青春,特别是步行起来脚步轻盈,一点都看不出已是年近花甲之人。

     
大家沿街道走了个方块,也不知是早了恐怕那里的酒店都做的面食,只有二四个货柜,卖些饼,小编买了两块饼,以备中晚饿时之需。大家走了大体上五海里,又回来客栈,正好吃早饭。饭后稍作休息于九点上车去火车站。

   
火车站离腾川旅馆只有一点伍仟米,几分钟就到了。此时还有多个多时辰,在站里干等着也是低级庸俗,于是拖着SEvoque去站外逛逛。SKuga比作者大学一年级岁,是个好玩幽默的人,最崇拜他的是渡过很多地点,对风景特点和地理都很清楚,而且拍照也很好。

   
大家瞎逛,发现旅馆里有一食品名称,有点好奇,叫包面。作者猜是大家常见说的馄饨,因为观望有别人在吃,牌价榜上却尚无,于是问了一个人摆摊的妇人,回答说包面便是馄饨,叫法不一致而已。那也正是位置风味。贰个多钟头虽惆怅,毕竟照旧在世俗中过去了。大家上了列车。笔者、火柴、朱兄、尤娜静、纪兄(爱奶咖)夫妇、蝶恋花、螃蟹(芜寒)夫妇等十一位在12号车厢,SENCORE和后来在11号车厢,A强尼和au在一等座车厢。金戈2日(红梅)夫妇去都林再玩一天,然后飞北京。

     
金戈1二十六日的那件写着“战杜阿拉”的土红半袖衫分外明显,也展露了他是个观球的观众,同时也开心徒步,参预长距离的步行也有少数1五次。他老伴红梅就像是比他略强,古河床他小腿抽筋了没去,红梅却实在地走完了全程,且毫发未损。高铁很彻底,在汉口前旅客寥寥无几,像似大家包车。汉口站上来大批量旅客,差不多座位座无虚席。这一块儿窗外美景连连,S奥迪Q3抓拍了过多,小编、爱奶咖都拍了,没她拍的好。

     
最羡慕纪兄和爱奶咖夫妇,退休了能够天空任鸟飞,有的是时间,想去哪就去哪。纪兄是本次最年长的,虚龄六十七周岁,老骥伏枥,精神可嘉,一点不拖后退,全程紧跟军事。还有部分夫妻也是十分赞~螃蟹和芜寒夫妇,1人是小鸟依人,一位是保佑有嘉,都是强驴坐着时间长了也累,所以时而去11号车厢看看SRubicon和新生。

     
一日千里是个淑女,高挑的身材,大双目,具备漂亮的女人的基本要素,为人直率。只是26日被蛇咬十年怕草绳,在超滑的本土行走腰板就挺不直了,万幸三沙。据他们说还是个羽球爱好者,有机会约下。

   
高铁在晚9:18抵达虹桥动车站,小编跟蝶恋花一路,二号线换一号线,其余人各奔东西,大家依依告别,互道尊崇。望着au匆匆的背影,也跟不上他的步伐。他是个环境保护主义者,很具有同情心。一路走下来,时常跟他同行,也聊的一点青眼。在等车进站时见到A强尼,大家几人同行。A强尼是个移动达人,身材好,有点酷,照片也拍的好。一路上聊的很春风得意,直至分手,到家已是晚十点半了。

   
本次恩施徒步很难忘,加领队火柴共1伍人,平均年龄超伍拾岁。但速度一点非常的慢,不输年轻人,甚至比年轻人更稳健。其中陈兄因家里有事只玩了恩施大山里就赶忙回沪了;碳酸钙也在5号去了恩施,继续他的旅程。碳酸钙是个旅行达人,更是个攻略专家。在5号那天,大家唯有16人聚餐~满汉全席。

那是张最全的全家福。后排左起:au.(打伞的)、蝶恋花、朱兄、金戈5日、如日方升、红梅、A强尼、S锐界、爱奶咖、碳酸钙、雨齐、螃蟹。前排左起:尤娜静、纪兄、芜寒、卖女孩的小火柴。帮拍照的是地导楚韵立桥,1人羽球专业的学士,很阳光,走滑地相当的棒,全程不用帮助。假如在行前给大家多介绍些徒步路线中的处境就更好了。

不得不提的最后晚餐,我们十四个人,共享二十四道大餐,吃不掉,所以称为~满汉全席。恩施旅馆里不是点菜的,是包餐,客人说稍微钱一个人,然后商家依据人口做菜,让您吃饱吃好。大家这一桌共688元,那在巴黎没二千左右是拿不下来的。那里的骑行离闲散的流动资金源开发的还不够,商业气息不浓。在恩施七星寨大门里的小摊上买一碗炒菜饭惟有十元,可以极其续碗,直至吃不下。

恩施特色菜:肉沫合渣。渣,就是黄豆之类粉碎不过滤,加肉沫、3只鸡蛋和调味,营养丰盛。

恩施特色菜:稀广椒炒腊肉。稀广椒很好吃,它是辣椒磨成粉拌入玉蜀黍汤制作而成,炒腊肉,色香味俱全。

住在鹿院坪桃源仙居农家,有一间有火炉的房间,店主很好,看到我们都湿了让进去烤火取暖并烘干衣装鞋子。在那间房屋里的墙上挂满了腊肉,那是此处的特产,大概家家都做。价钱也不贵,三十元一斤。每顿晚餐大致都有腊肉那道菜。

衰老的吊脚楼。过去此地都以那种木质结构的房屋,两层楼,一楼养牲口,二楼住户。以往早已很少见到了,都住上了水泥砖瓦高楼。那是在去古河床路上拍的,早已没人居住,破落的吊脚楼见证着时期的迈入和变化。

   
说到那里,想说的主干说完了。本次恩施徒步算是画上了圆满的句号,下次再约。

【未完待续】


若希望投稿将你的作品分享给更加多的人
或加盟杂谈交换群与诸位小编实行创作互动交换请私信大家

关爱一航文学与情势 期待与你遭受

本文为原创未经允许请勿转发

星期四 |雨齐游记 疯行天下(十六)

文章 |雨齐

图片 | 雨齐

编辑 | 意融

书友们只要喜欢那篇作品,别忘记了点赞转载哦

测试方法:打包之后安装ipa文件,然后使用极光推送,选用生产条件,推送,即可。

透过地点的操作,你就会惊奇的意识,推送已经适配实现了,iOS10的系统,已经能够平常接收布告了。

二、中级篇

此处作者会给大家讲一讲iOS10的推送,怎样注册,通过什么代理,哪些措施能够用,哪些方法不能用。

1.系统自带方法

大家不论是利用三方平台的推送,如故系统自带的推送,都先应该精晓下系统自带方法,怎样达成远程文告的贯彻。

  • 首先步导入#import <UserNotifications/UserNotifications.h>
    且要信守<UNUserNotificationCenterDelegate>的说道,在Appdelegate.m中。
    此地必要留意,大家最好写成那种样式

#ifdef NSFoundationVersionNumber_iOS_9_x_Max
#import <UserNotifications/UserNotifications.h>
#endif
  • 其次步大家必要在
    (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions中注册布告,代码如下:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    if ([[UIDevice currentDevice].systemVersion floatValue] >= 10.0) {
        //iOS10特有
        UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
        // 必须写代理,不然无法监听通知的接收与点击
        center.delegate = self;
        [center requestAuthorizationWithOptions:(UNAuthorizationOptionAlert | UNAuthorizationOptionBadge | UNAuthorizationOptionSound) completionHandler:^(BOOL granted, NSError * _Nullable error) {
            if (granted) {
                // 点击允许
                NSLog(@"注册成功");
                [center getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) {
                    NSLog(@"%@", settings);
                }];
            } else {
                // 点击不允许
                NSLog(@"注册失败");
            }
        }];
    }else if ([[UIDevice currentDevice].systemVersion floatValue] >8.0){
        //iOS8 - iOS10
        [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeSound | UIUserNotificationTypeBadge categories:nil]];

    }else if ([[UIDevice currentDevice].systemVersion floatValue] < 8.0) {
        //iOS8系统以下
        [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound];
    }
    // 注册获得device Token
    [[UIApplication sharedApplication] registerForRemoteNotifications];

里面,获得Device Token的点子是没有改变的。

// 获得Device Token
 - (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    NSLog(@"%@", [NSString stringWithFormat:@"Device Token: %@", deviceToken]);
}
// 获得Device Token失败
- (void)application:(UIApplication *)application
didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
    NSLog(@"did Fail To Register For Remote Notifications With Error: %@", error);
}

本次iOS10种类的换代,苹果给了我们一个代理方法来拍卖通报的吸纳和点击事件,那三个艺术在<UNUserNotificationCenterDelegate>的商业事务中,大家能够查阅下。别的,苹果把地面布告跟远程公告难解难分。区分本地通告跟远程布告的类是UNPushNotificationTrigger.h类中,UNPushNotificationTrigger的品类是新扩张的,通过它,大家得以收获部分公告的接触条件,在采用时,大家不该向来利用那一个类,应当使用它的子类。

  • 自笔者总结点说

  • 1.UNPushNotificationTrigger (远程文告) 远程推送的通报类型

  • 2.UNTimeIntervalNotificationTrigger (本地公告)
    一定时间过后,重复恐怕不另行推送布告。大家得以设置timeInterval(时间距离)和repeats(是不是再次)。

  • 3.UNCalendarNotificationTrigger(本地布告)
    一定日期未来,重复只怕不重复推送公告例如,你每一日8点推送贰个通报,只要dateComponents为8,如若你想每一日8点都推送这些通告,只要repeats为YES就足以了。

  • 4.UNLocationNotificationTrigger (本地公告)地理地点的一种公告,
    当用户进入或离开2个地理区域来打招呼。在CLRegion标识符必须是绝无仅有的。因为一旦相同的标识符来标识不相同区域的UNNotificationRequests,会造成不鲜明的作为。

收下文告的代码如下:

// iOS 10收到通知
- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler{
    NSDictionary * userInfo = notification.request.content.userInfo;
    UNNotificationRequest *request = notification.request; // 收到推送的请求
    UNNotificationContent *content = request.content; // 收到推送的消息内容
    NSNumber *badge = content.badge;  // 推送消息的角标
    NSString *body = content.body;    // 推送消息体
    UNNotificationSound *sound = content.sound;  // 推送消息的声音
    NSString *subtitle = content.subtitle;  // 推送消息的副标题
    NSString *title = content.title;  // 推送消息的标题

    if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
        NSLog(@"iOS10 前台收到远程通知:%@", [self logDic:userInfo]);

    }
    else {
        // 判断为本地通知
        NSLog(@"iOS10 前台收到本地通知:{\\\\nbody:%@,\\\\ntitle:%@,\\\\nsubtitle:%@,\\\\nbadge:%@,\\\\nsound:%@,\\\\nuserInfo:%@\\\\n}",body,title,subtitle,badge,sound,userInfo);
    }
    completionHandler(UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionSound|UNNotificationPresentationOptionAlert); // 需要执行这个方法,选择是否提醒用户,有Badge、Sound、Alert三种类型可以设置
}

上边包车型地铁代码则是通报的点击事件:

// 通知的点击事件
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler{

    NSDictionary * userInfo = response.notification.request.content.userInfo;
    UNNotificationRequest *request = response.notification.request; // 收到推送的请求
    UNNotificationContent *content = request.content; // 收到推送的消息内容
    NSNumber *badge = content.badge;  // 推送消息的角标
    NSString *body = content.body;    // 推送消息体
    UNNotificationSound *sound = content.sound;  // 推送消息的声音
    NSString *subtitle = content.subtitle;  // 推送消息的副标题
    NSString *title = content.title;  // 推送消息的标题
    if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
        NSLog(@"iOS10 收到远程通知:%@", [self logDic:userInfo]);

    }
    else {
        // 判断为本地通知
        NSLog(@"iOS10 收到本地通知:{\\\\nbody:%@,\\\\ntitle:%@,\\\\nsubtitle:%@,\\\\nbadge:%@,\\\\nsound:%@,\\\\nuserInfo:%@\\\\n}",body,title,subtitle,badge,sound,userInfo);
    }

    // Warning: UNUserNotificationCenter delegate received call to -userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: but the completion handler was never called.
    completionHandler();  // 系统要求执行这个方法

}

在点击事件中,假诺大家不写completionHandler()那个主意,恐怕会报一下的不当,希望大家留意下~
Warning: UNUserNotificationCenter delegate received call to -userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: but the completion handler was never called.

说到底最终,大家要我们补充一下,旧版本的有个别艺术,方便大家扩展iOS10的通告的关照,不影响原有逻辑。

- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo {
    NSLog(@"iOS6及以下系统,收到通知:%@", [self logDic:userInfo]);
}

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

    NSLog(@"iOS7及以上系统,收到通知:%@", [self logDic:userInfo]);
    completionHandler(UIBackgroundFetchResultNewData);
}

2.极光推送(需求下载最新的版本)

若果用到三方的有些平台,做推送就会尤其简单。

1.登记文告的代码如下

if ([[UIDevice currentDevice].systemVersion floatValue] >= 10.0) {
#ifdef NSFoundationVersionNumber_iOS_9_x_Max
    JPUSHRegisterEntity * entity = [[JPUSHRegisterEntity alloc] init];
    entity.types = UNAuthorizationOptionAlert|UNAuthorizationOptionBadge|UNAuthorizationOptionSound;
    [JPUSHService registerForRemoteNotificationConfig:entity delegate:self];
#endif
  } else if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
      //可以添加自定义categories
      [JPUSHService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |
                                                        UIUserNotificationTypeSound |
                                                        UIUserNotificationTypeAlert)
                                            categories:nil];
  } else {
      //categories 必须为nil
      [JPUSHService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |
                                                        UIRemoteNotificationTypeSound |
                                                        UIRemoteNotificationTypeAlert)
                                            categories:nil];
  }

挂号成功之后,我们则需求参与极光推送更新后,新加盟的3个艺术,那八个艺术在<JPUSHRegisterDelegate>代理方法中。

/*
 * @brief handle UserNotifications.framework [willPresentNotification:withCompletionHandler:]
 * @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用户通知中心
 * @param notification 前台得到的的通知对象
 * @param completionHandler 该callback中的options 请使用UNNotificationPresentationOptions
 */
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger options))completionHandler;
/*
 * @brief handle UserNotifications.framework [didReceiveNotificationResponse:withCompletionHandler:]
 * @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用户通知中心
 * @param response 通知响应对象
 * @param completionHandler
 */
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler;

行使时,只需求在地点的代码中丰裕极光的拍卖措施就能够了,具体应用如下图:

if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
    // 这个方法,不管是收到通知代理还是点击通知的代理,如果使用极光推送,我们都是需要增加这个方法的。
    [JPUSHService handleRemoteNotification:userInfo];

    NSLog(@"iOS10 收到远程通知:%@", [self logDic:userInfo]);
    [rootViewController addNotificationCount];
  }
  else {
    // 判断为本地通知
    NSLog(@"iOS10 收到本地通知:{\\\\nbody:%@,\\\\ntitle:%@,\\\\nsubtitle:%@,\\\\nbadge:%@,\\\\nsound:%@,\\\\nuserInfo:%@\\\\n}",body,title,subtitle,badge,sound,userInfo);
  }

经过上边的篇章,相信我们已经得以开首掌握新本子的推送,要哪些处理啊~

稍后,笔者会更新以下的内容,希望大家协助:
UNNotificationContentExtension – 公告内容扩充
UNNotificationServiceExtension- 公告服务扩展
UNNotificationAction – 公告响应的章程
UNErrorCode – 布告错误
UNNotificationAttachment – 附属类小部件布告
稍后自笔者还会上传demo路径。

假使您喜爱本身的作品,不要忘记关心自身,多谢大家了~
其余借使你要转载,希望能够注解出处,作者会写出更加多更好的稿子,来回馈我们~

相关文章

No Comments, Be The First!
近期评论
    分类目录
    功能
    网站地图xml地图