现在的位置: 首页 > 综合 > 正文

OpenFeint源码学习之Challenge模块

2013年10月19日 ⁄ 综合 ⁄ 共 4794字 ⁄ 字号 评论关闭

刚开始学习,有问题请指正。

1. Challenge模块

1.1 Challenge模块功能概览

类OFChallengeDefinition为一个挑战信息进行建模,建模的对象为在OpenFeint dashboard建立的一个挑战。该类提供对外提供下载挑战描述、挑战图片的接口。服务类OFChallengeDefinitionService提供提供下载挑战信息的接口,这些接口被类OFChallengeDefinition所使用。OFChallengeDefinitionDelegate定义OFChallengeDefinition相关操作的回调函数。 

类OFChallenge为挑战进行建模,提供发送挑战和下载挑战数据的接口。OFChallengeSendDelegate定义OFChallenge相关操作的回调函数。类OFChallenge使用类OFChallengeService提供的服务。

 OFChallengeService是全局的单件实例,提供发送挑战、提交挑战结果、下载挑战信息、获取指定用户的挑战、拒绝挑战、把挑战信息写入文件、从文件中读取挑战信息、获取所有历史挑战信息、获取指定应用指定的挑战信息的服务。

类OFChallengeToUser为一个被挑战者收到的挑战信息进行建模。提供从文件中读取挑战信息、把挑战信息保存到文件、发送挑战结果、拒绝一个挑战的接口。OFChallengeToUserDelegate定义OFChallengeToUser相关操作的回调函数。类OFChallengeToUser使用OFChallengeService提供的服务。

OFReceivedChallengeNotificationData为一个通知类,当有挑战信息到来时,该类的接口dataWithChallengeToUser会被调用。

1.2 Challenge模块类关系图

图 1-1  Challenge 模块类结构图

1.3 Challenge模块序列图

序列图消息描述,描述发送一个挑战到挑战结束的过程中,各个类的一些接口的交互方式。主要为了说明各个类的参与过程,只涉及了每个类的部分接口。

图2-1Challenge模块时序图

时序图中涉及方法的概述:

1.     调用OFChallengeDefinition的方法downloadAllChallengeDefinitions获取挑战描述信息。

2.    挑战数据返回。

3.    挑战数据返回后,OFChallengeDefinitionDelegate的接口didDownloadAllChallengeDefinitions被调用。

4.    调用OFChallenge的方法initWithDefinition:challengeDescription:challengeData:创建一个挑战。

5.    调用OFChallenge的方法sendChallenge:toUsers:inResponseToChallenge:发送一个挑战。

6.    获取挑战的通告。

7.    获取通告后,OFReceivedChallengeNotificationData的方法dataWithChallengeToUser会被调用。参数中包含一个OFChallengeToUser的引用。

8.    玩家挑战结束后,调用OFChallengeToUser的接口completeWithResult发送挑战结果,OFChallengeToUser使用OFChallengeService提供的服务。

1.4 Challenge模块API接口

1.4.1 OFChallenge

        OFChallenge为挑战模块,提供发送和下载挑战数据的接口。

       相关类和协议:

               OFChallengeService、OFChallengeSendDelegate。

        1. 设置OFChallenge相关操作的代理

            +(void)setDelegate:(id<OFChallengeSendDelegate>)delegate

        2. 初始化一个挑战

           - (OFChallenge*)initWithDefinition:

(OFChallengeDefinition*)definition  //  挑战的定义

             challengeDescription:(NSString*)text // 完成这个挑战,需要完成的事情

             challengeData:(NSData*)data // 重新开始这个挑战时需要的数据

        3. 显示默认的发送挑战的界面

            -(void)displayAndSendChallenge

        4. 向一组好友发送挑战

                        - (OFRequestHandle*)

sendChallenge:(OFChallengeDefinition*)// 挑战描述

toUsers:(NSArray*)userIds  // 一组好友ID

                            inResponseToChallenge:(OFChallenge*)instigatingChallenge

            返回值:

                   发送数据请求的句柄,可以使用这个句柄取消该请求

            说明:

        5. 下载一个特定的挑战数据

            -(OFRequestHandle*)downloadChallengeData

            返回值:

                   发送数据请求的句柄,可以使用这个句柄取消该请求

            说明:

              Invokes:

               - (void)didDownloadChallengeData:(NSData*)dataOFChallenge:(OFChallenge*)challenge on success

                -(void)didFailDownloadChallengeDataOFChallenge:

(OFChallenge*)challenge on failure

1.4.2 OFChallengeDefinition

    OFChallengeDefinition为一个挑战的进行建模。其为在OpenFeint dashboard建立的一个挑战进行建模。

    相关类和协议:

            OFChallengeDefinitionService、OFChallengeDefinitionDelegate

    1. 设置OFChallengeDefinition相关操作的代理   

       + (void)setDelegate:(id<OFChallengeDefinitionDelegate>)delegate

    2. 下载所有的挑战定义

       + (OFRequestHandle*)downloadAllChallengeDefinitions

       返回值:

             发送数据请求的句柄,可以使用这个句柄取消该请求

       说明:

             Invokes:

              - (void)didDownloadAllChallengeDefinitions:

(NSArray*)challengeDefinitionson success and                

-(void)didFailDownloadChallengeDefinitions on failure.

    3. 下载指定ID的挑战

       +(OFRequestHandle*)downloadChallengeDefinitionWithId:

(NSString*)challengeDefinitionId

       返回值:

             发送数据请求的句柄,可以使用这个句柄取消该请求

       说明:

             Invokes:

                 -(void)didDownloadChallengeDefinition:

(OFChallengeDefinition*)challengeDefinitionon success and

-(void)didFailDownloadChallengeDefinition on failure 

     4. 下载挑战的图片:

         - (OFRequestHandle*)getIcon

        说明:

             Invokes:

             - (void)didGetIcon:(UIImage*)imageOFChallengeDefintion:(OFChallengeDefinition*)challengeDef

on success and             

-(void)getFailGetIconOFChallengeDefinition:

(OFChallengeDefinition*)challengeDefon failure

1.4.3. OFChallengeToUser

    当一个玩家向另一个玩家挑战时,被挑战玩家会收到具体的挑战信息,OFChallengeToUser为这些挑战信息进行建模。

    相关类和协议:

            OFChallengeService、OFChallengeToUserDelegate

    1. 设置OFChallengeToUser操作相关的代理

       + (void)setDelegate:(id<OFChallengeToUserDelegate>)delegate 

    2. 从文件中读取ChallengeToUser数据

       + (OFChallengeToUser*)readFromFile:(NSString*)fileName   

    3. 挑战结束后,发送挑战结果

       - (OFRequestHandle*)completeWithResult:

(OFChallengeResult)challengeResult      

       说明:

            Invokes:

                       -(void)didCompleteChallenge:(OFChallengeToUser*)challengeToUser on success and                      

-(void)didFailCompleteChallenge:

(OFChallengeToUser*)challengeToUseron failure

    4. 拒绝一个挑战

       - (OFRequestHandle*)reject

       说明:

            Invokes:

                      -(void)didRejectChallenge:

(OFChallengeToUser*)challengeToUseronsuccess and                   

-(void)didFailRejectChallenge:

(OFChallengeToUser*)challengeToUser;on failure

    5. 显示完成挑战的OpenFeint的默认的界面

                      -(void)displayCompletionWithData:

(NSData*)resultData // 针对多次尝试挑战,用于创建一个新的挑战

reChallengeDescription:(NSString*)reChallengeDescription 

// 针对多次尝试挑战,用于创建一个新的挑战的描述

    6. 把ChallengeToUser数据写入到文件中

                    -(void)writeToFile:(NSString*)fileName

抱歉!评论已关闭.