2018/4/16 15:09:45当前位置推荐好文程序员浏览文章

各位老铁们,很抱歉,之前的文章内容我已经彻底删除了,毕竟现在iOS 11都有了,现在做推送,想语音报内容,又不想程序被杀死,这是不可可以滴哈哈!不过我的确有做让程序一直挂在后端运行的,坚持最高的如同有48个小时。 我靠!听完都震精!这不是对手机有危害吗!这种程序上架可以过的都是毒瘤哈哈哈!

好了,不扯别的了,其实我们没必要让程序一直保持在运行当中,我们能给他一个推送,让程序唤醒,执行里面的推送扩展方法即可以。有人说支付宝能播报,哪怕程序被杀死以后也能,老实说,你能把支付宝的推送给关闭了,你再试试收付款,你看看可以不可以播报了? 测试完你很快就可以得知支付宝利消耗的也是推送扩展。 推送扩展哪方面的呢?

iOS 10 UNNotificationServiceExtension ! 这个具体各位大佬们能直接百度搜索一下就好。我呢就直接将重要的代码给各位展现出来。请看下面:

1.首先后台要给你个推送测试内容,内容模板如下:

( 要记住在aps里肯定要有"mutable -content"这个字段,alert 这个消耗字符串即可以,不消耗字典。当然字典也行,后面能获取里面字符串也行。)

推送模板
2.选择创立“NotificationServiceExtension” 

(看仔细了,不要问我为
什么不选左边的,你能先百度理解一下推送扩展,就理解了。)


imageimage.pngimage.png

3.NotificationService.m文件内的代码,这就是iOS10的推送扩展

////  NotificationService.m//  GYNotificationService////  Created by Sylar on 2018/4/12.//  Copyright © 2018年 Sylar. All rights reserved.//#import "NotificationService.h"#import <AVFoundation/AVFAudio.h>@interface NotificationService ()<AVSpeechSynthesizerDelegate>@property (nonatomic, strong) void (^contentHandler)(UNNotificationContent contentToDeliver);@property (nonatomic, strong) UNMutableNotificationContent attemptContent;@property (nonatomic, strong) AVSpeechSynthesizer aVSpeechSynthesizer;@end@implementation NotificationService- (void)didReceiveNotificationRequest:(UNNotificationRequest )request withContentHandler:(void (^)(UNNotificationContent  _Nonnull))contentHandler {       self.contentHandler = contentHandler;        self.attemptContent = [request.content mutableCopy];    self.aVSpeechSynthesizer = [[AVSpeechSynthesizer alloc] init];    // Modify the notification content here...    NSString str = self.attemptContent.userInfo[@"aps"][@"alert"];    AVSpeechUtterance  aVSpeechUtterance = [[AVSpeechUtterance alloc] initWithString:str];        aVSpeechUtterance.rate = AVSpeechUtteranceDefaultSpeechRate;        aVSpeechUtterance.voice =[AVSpeechSynthesisVoice voiceWithLanguage:@"zh-CN"];        [self.aVSpeechSynthesizer speakUtterance:aVSpeechUtterance];}- (void)serviceExtensionTimeWillExpire {    // Called just before the extension will be terminated by the system.    // Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.    self.contentHandler(self.attemptContent);}@end
  1. 配置扩展需要的开关


    image.png
image.png

加上:“App Transport Security Settings” “Allow Arbitrary Loads”

5.到这一步基本已经能了。而后先运行一下项目,而后再选择运行一下扩展


image.png

之后你即可以感受到推送的快感,你能将程序杀死。假如你发现测试了但没声音,你可可以需要换个手机试一下,推送是必需要打开的,不行的话,卸载APP重新安装即可以了。其实推送扩展没啥代码的,很容易的,假如你觉得系统机器人声音难听,支付宝的好听,那是由于他们在扩展里加了判断,声音是由多个音频文件合成的。但是都是收款,需要的话能加群直接要,群内也有示范demo,另外需要注意的是iOS 10以后才支持,10以前是不支持的哦!假如有帮助到您,请点赞+关注!爱你么么哒。想进群先打赏哈哈~

网友评论