iOS 接入微博直播

/ 0评 / 0

之前发现微博开通了直播接口,而且还支持VR直播,很适合我们当前的产品需求,正好能够借助微博的平台来做产品,所以我们就去申请这个接口,其实开发技术没啥难的,只是申请的时候麻烦点,直接在后台去申请的话肯定不能通过,需要人工审核,要跟他们的产品发邮件申请,还需要提供一些资料,邮件原文:

请提供拟接入应用的资料,开通直播接口需要进行人工审核,谢谢。
资料包括但不限于:App的产品说明书,直播功能的主要使用场景,目前大致的用户量级,等等。

主要就是产品说明书,我们准备产品说明书都花了一周,通过之后产品会让你发送 AppID,然后让你在后台申请,他们会给你通过,很快都通过了,然后就可以开发了~

首先要获取token,因为请求创建直播要用token,另外,用户直播权限限制 用户直播权限 目前微博直播只支持橙V认证用户、媒体&政务蓝V认证用户开通直播功能,不在此范围内的用户需通过芝麻认证或人工认证才能进行直播。我这里使用过shareSDK的分享了,所以直接使用shareSDK去获取token,然后去请求直播链接

//以新浪微博为例子,在客户端授权时有效,网页授权无效,另外如果用户已经关注了,那么客户端授权时那个关注选项是会被隐藏掉的
        NSString *token = [kUSER_DEFAULTS objectForKey:@"token"];
        // 过期时间
        NSDate *guoqiDate = [kUSER_DEFAULTS objectForKey:@"expired"];
        // 判断当前登录的时间  是否在过期时间以内
        NSComparisonResult result = [[NSDate date] compare:guoqiDate];

        if ([Tool isNOTNull:token] && result == NSOrderedAscending) {
            [[NetWorkManager getInstance] startWeiboLive:token andTitle:title andSummary:summary isPublished:published andImage:imageUrl andCallback:^(NSString *id_num, NSString *room_id, NSString *url) {
                SRQLog(@"拿到的直播房间信息:id_num ===== %@--------room_id ===== %@-----url ===== %@",id_num,room_id,url);
                [SVProgressHUD dismiss];
            }];
        }else{
            [ShareSDK authorize:SSDKPlatformTypeSinaWeibo settings: @{SSDKAuthSettingKeyScopes : @[@"all"]} onStateChanged:^(SSDKResponseState state, SSDKUser *user, NSError *error) {
                // 处理回调
                SRQLog(@"token ===== %@--------date ===== %@",user.credential.token,user.credential.expired);
                [kUSER_DEFAULTS setObject:user.credential.token forKey:@"token"];
                [kUSER_DEFAULTS setObject:user.credential.expired forKey:@"expired"];
                [[NetWorkManager getInstance] startWeiboLive:user.credential.token andTitle:title andSummary:summary isPublished:published andImage:imageUrl andCallback:^(NSString *id_num, NSString *room_id, NSString *url) {
                    SRQLog(@"拿到的直播房间信息:id_num ===== %@--------room_id ===== %@-----url ===== %@",id_num,room_id,url);                    
                    [SVProgressHUD dismiss];
                }];
            }];
        }

下面是获取直播信息的方法:

- (void)startWeiboLive:(NSString *)token andTitle:(NSString *)title andSummary:(NSString *)summary isPublished:(NSString *)published andImage:(NSString *)imageUrl andCallback:(void(^)(NSString *id_num, NSString *room_id, NSString *url))callback{
    NSMutableDictionary *dataDic = [NSMutableDictionary dictionary];
    [dataDic setValue:token forKey:@"access_token"];
    [dataDic setValue:title forKey:@"title"];
    [dataDic setValue:@"1440" forKey:@"width"];
    [dataDic setValue:@"720" forKey:@"height"];
    [dataDic setValue:[Tool urlEncode:summary] forKey:@"summary"];
    [dataDic setValue:published forKey:@"published"];
    [dataDic setValue:imageUrl forKey:@"image"];
    [dataDic setValue:@"0" forKey:@"replay"];
    [dataDic setValue:@"1" forKey:@"is_panolive"];
    
    AFHTTPSessionManager *manger = [AFHTTPSessionManager manager];
    [manger POST:weiboLive parameters:dataDic progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSString *id_num = [responseObject objectForKey:@"id"];
        NSString *room_id = [responseObject objectForKey:@"room_id"];
        NSString *url = [responseObject objectForKey:@"url"];
        callback(id_num, room_id, url);
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        SRQLog(@"失败----%@",error.localizedDescription);
        [SVProgressHUD showErrorWithStatus:setInternational(@"live.create.error.string")];
    }];
}

这样就可以通过rtmp推流去直播了~

评论已关闭。