关于APP上盈禾国际的完整实现(iOS篇)

前一段时间,东西Alipay范围100形成环状在互联网广播网上响起。,竟,这是在。APP上,特别领取类别的敷用药,常常用到,明天咱们将议论它的使生效。,给显像剂东西类似的的参考书。。

率先,咱们这次是由于推进。+发言办法足以产生。。

运用sound实地的

咱们都晓得,咱们可以推。,命名sound的确定,电台、电视节目命名的发音用纸覆盖。。

立即,录制东西发音用纸覆盖。,暂时理由“”吧,添加到次要运作中。

当侍者收到一笔钱时,,向音讯胸部大型敞篷摩托艇推进运动。,推进运动的体式和情节如次:

{APS:{警报:XXX to Cube。,慢慢向前移动:1,发音:

很,APP收到睬到时,爸睬到框。,显示XXX要还帐。,并伴同东西发音。,语音用纸覆盖在电台、电视节目。。

播送量

即使你收到一笔钱,即使咱们能播送精确的数字,那就更好了。,因合计是常变化的的。,如下规划不克不及添加很多。”用纸覆盖,这么咱们正是分解量。,在AVFoundation里,分解发音API,第三方,它也像百度同上。、第三方复杂的语音交流。,让咱们来勘探一下。,它相当硬。。在这时咱们仿造地铁。、电台播送,记载必然的根本的发音。、必然的数字,咱们分解咱们需求的发音。。

假设,你平均数范围的发音体式执意很。:钱来了。到账元。

咱们在财富里记载和预先布置了必然的发音用纸覆盖。,这些用纸覆盖包含:

  对应的课文是:钱来了。到账

 对应的课文是:元。

也有必然的指令数字的表。,如0123456789、十、百、千、万、点

类似的发音用纸覆盖是:

 ~ tts_9.mp3、、、、、

当咱们想电台、电视节目发音时

钱来了。到账

”的时辰,咱们可以授权代理电台、电视节目发音用纸覆盖。:

、、、、、

就可以了。

这归结起来将合计替换为语音用纸覆盖的算法。,产生了演示文稿。,可以参考书一下:

-(NSString *)wordsStringFromAmount:(NSString *)numstr;

如下奔流执意很。:

1、后端收到钱。,推进被发展的状态,体式是:

{"aps":{"alert":"钱来了。到账元",慢慢向前移动:1,"amount":, 发音: 

2、客户端接纳推进运动。,装卸量场量,替换为类似的电台、电视节目用纸覆盖大厦。

- (空)敷用药:(UIAp敷用药) *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
    [[BPAudioManager sharedPlayer] playPushInfo:userInfo 成:零 ;
}

3、开端电台、电视节目发音用纸覆盖。

背地里剧

当敷用药程序在突出的地方时,,完毕办法缺乏成绩。,在底色的时辰,正是一名球员将被棉套。如下流通语音用纸覆盖。,也缺乏成绩的,但在底色和敷用药程序抛弃。,如下办法使生效必然的处置。,电台、电视节目发音是不可以通行的的。,因而用倚靠办法。,侥幸的是,当苹果进入IOS10时,,流出了UNNotificationServiceExtension发达,使用着的如下发达,你可以在网上选择必然的传达。,次要思惟是,在长途推到修理从前。,我会给你东西更改的时机。,咱们晓得,推进体是受宪法限制的的。,推体的大部分也会撞击推进运动实力。,受胎如下扶助,咱们可以修正头衔。、情节,您还可以从广播网盘问情节。,分解东西新的推杆。。这时咱们不修正情节。,它次要用于电台、电视节目发音。。

运用此发达名,像倚靠发达同上。,创办新的目的,找到如下模板。,后来地下一步。,就好了。

该体系自动手枪产生两种办法。:

- (奈何)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler ;
- (奈何)serviceExtensionTimeWillExpire;

前者,你需求在这时动手术。,修正情节,当你成,睬到体系,这时辰,推会涌现。。咱们次要经纪推进运动。,电台、电视节目发音。;后者将在加班地的制约下被理由。。如:

- (奈何)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
     = contentHandler;
     = [request.content mutableCopy];
    
    STEP1 使佩带像章的推进运动先前在这时被处置了。
    NSMutableDictionary *dict = [.userInfo mutableCopy] ;
    字典 setObject:[NSNumber numberWithBool:YES] forKey:@"hasHandled"] ;
    .userInfo = dict ;
    
    //step2: 疏忽推进运动说得中肯默许语音用纸覆盖(可能性是)
    .sound = [UNNotificationSound defaultSound] ;
    
    //step3: 处置推进运动传达,电台、电视节目发音
    [[BPAudioManager sharedPlayer] playPushInfo:.userInfo completed:^{
        // 竞赛完毕后,睬到体系
        ();
    }] ;
}

- (奈何)serviceExtensionTimeWillExpire {
    // Called just before the extension will be terminated by the 体系。
    // Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be 运用。
    ();
}

活化作用UNNotificationServiceExtension发达,您需求向实地的添加常变化的情节实地的。,因而新的推进体是:

{"aps":{"alert":"钱来了。到账元",慢慢向前移动:1,"mutable-content":1,"amount":, 发音: 

BPAudioManager

咱们下定义了东西用于语音处置的衣服的胸襟类。,因发达和敷用药程序其运用如下类。,如下,当您创办此用纸覆盖时,,睬目的的选择

- (奈何) playPushInfo:(NSDictionary *)userInfo completed:(BPAudioPlayCompleted)completed {
    
    获取APS
    NSDictionary *aps =  [用户传达] objectForKey:@"aps"] ;
    
    确定可能的选择播送语音。,因所相当推进。,会来这时。
    BOOL playaudio =  [APS objectForKey:@"playaudio"] boolValue] ;
    if(!playaudio) {
        即使(成) != 零) {
            completed() ;
        }
    }
    // 处置
    else {
        self.completed = completed ;
        NSString *amount = [APS objectForKey:@"amount"] ;
        NSArray* arrAudioFiles = [单一的] getAudioFilesWithAmount:amount] ;
        [单一的] playAudioFiles:arrAudioFiles] ;
    }
}

头等处置量,获取东西语音用纸覆盖大厦。,电台、电视节目发音这是由一圈直线部分电台、电视节目的。

// 电台、电视节目发音用纸覆盖
- (奈何) playAudioFiles {
    // 1。获取电台、电视节目音频用纸覆盖的URL。
    NSString *fileName = [audioFiles objectAtIndex:audioIndex] ;
    NSString *path = [NSString stringWithFormat:@"%@/%@",[[NSBundle mainBundle] resourcePath], 确定 ;
    NSURL *fileURL = [NSURL fileURLWithPath:path];
    
    // 2。生产 AVAudioPlayer 情郎
    self.audioPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:fileURL 离经叛道的行为:零
    // 4。设置一圈电台、电视节目。
    self.audioPlayer.numberOfLoops = 0 ;
    self.audioPlayer.delegate = self;
    // 5。开端玩
    [单一的].audioPlayer prepareToPlay] ;
    [单一的].audioPlayer 玩
}
// 回放成回调
- (奈何)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player 成(BOOL)旗 {
    audioIndex += 1 ;
    if(audioIndex < ) {
        [单一的] performSelectorOnMainThread:@selector(playAudioFiles) withObject:nil waitUntilDone:NO] ;
    }
    else {
        [单一的] setNormalVolume] ;
        [单一的] disactivePlayback] ;
        [单一的] performSelectorOnMainThread:@selector(playCompleted) withObject:nil waitUntilDone:NO] ;
    }
}

到这时,类似的成了。,在底色、输出物语境,可以不变的盈禾国际了。

音量核算

有时辰,咱们不谨慎关上了发音。,或许大部分很小。,或是不发音的图案。,那如下时辰,这出戏的发音不可闻。,转移这种制约产生。,咱们在玩。,妥善处置。,对与错是喊叫的。。

// 设置高音量。
- (奈何) setHighVolume {
    MPVolumeView*volumeView = [[MPVolumeViewalloc] init
    UISlider*volumeViewSlider = nil;
    for(UIView*view in[volumeView 子风景
        if(["MPVolumeSlider"]){
            volumeViewSlider = (UISlider*)view;
            break;
        }
    }
    
    // 获取体系的原始音量。,用于复原
    userVolume= ;
    
    // 留出必然的改善的退路。,设置它。, 数值中间性二者中间。
    if(userVolume< f) {
        // 更改体系音量
        [volumeViewSlider setValue:fanimated:NO];
        // 发东西事件使之生效
        [volumeViewSlider sendActionsForControlEvents:UIControlEventTouchUpInside];
    }
}

后来地说明完毕。,将设置不变的音量。

// 设置为不变的卷。
- (奈何) setNormalVolume {
    MPVolumeView*volumeView = [[MPVolumeViewalloc] init
    UISlider* volumeViewSlider = nil;
    for(UIView*view in[volumeView 子风景
        if(["MPVolumeSlider"]){
            volumeViewSlider = (UISlider*)view;
            break;
        }
    }
    if(!=userVolume) {
        [volumeViewSlider 给定值:用户才能平均值:缺乏
        [volumeViewSlider sendActionsForControlEvents:UIControlEventTouchUpInside];
    }
}

后来地不发音的处置。:

// 不发音的图案下,还可以玩。
- (奈何) activePlayback {
    [[AVAudioSessionsharedInstance] setCategory:AVAudioSessionCategoryPlaybackerror:NULL];
    [[AVAudioSessionsharedInstance] setActive:YESerror:NULL];
}
//回归不变的
- (奈何)disactivePlayback {
    [[AVAudioSessionsharedInstance] 设置竞选运动:NOerror:NULL
}

到这程度,盈禾国际算是成了。

1、在iOS10以下,推进运用声场,突出的地方可以不变的电台、电视节目。,底色、输出物制约,电台、电视节目普通发音。

2、IOS或完毕,按下以添加常变化的情节实地的。,可以玩得很使完成。。

3、咱们添加了必然的机制。,在高音和不发音的图案下。,你也可以不变的任务。。

演示演示

发表评论

电子邮件地址不会被公开。 必填项已用*标注