中国法律网
法律通行证: 用户名: 密码:  注册
律师加盟热线:400-8919-913   律信通 律信通  
律师
公众 咨询 贴吧
律信通 案件委托
频道 房产 婚姻 交通事故 保险 建设工程 劳动
留学
公司 合同 刑事辩护 医疗 知识产权 工商
新闻 宽频 文书 常识 案例
法规 专题 杂志 百科 论文
查找全国各地律师: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 点击各城市名拼音首字母查找律师 公众找律师,信赖律信通!律师做宣传,首选律信通!
当前位置: 主页 > 法律专题2 > 申请的格式 >

【iOS开发必备指南合集】申请企业级IDP、真机调试、游戏接入Game(4)

时间:2013-08-15 00:08来源:互联网 作者:admin 点击:
首先,我借鉴Type One Error的代码,从https://github.com/typeoneerror/GKAchievementNotification中抓取一些代码植入自己的项目。我们将采用GKAchievementNotification和GKAchievementHandler类,同时进行相应更

首先,我借鉴Type One Error的代码,从https://github.com/typeoneerror/GKAchievementNotification中抓取一些代码植入自己的项目。我们将采用GKAchievementNotification和GKAchievementHandler类,同时进行相应更新和修改。首先,若你在游戏中运用ARC,快速扫描代码,移除那些发行、保留和自动发行代码属性。若你不想进行扫描,试着将文件放入项目及修复不符编译程序的内容,然后再创建内容。

Type One Error类将展示类似于iOS 5所呈现的通知内容,但代码需获悉成就标题和描述是什么。为实现这点,你需要嵌入“showsCompletionBanner”目标。

GKAchievementDescription目标的优点是它们已根据用户语言设定进行本土化,因此采用此方式不存在任何本土化问题。

其弊端在于你无法只加载一个成就描述,你需要加载所有内容。我认为进行此操作的最佳时间是用户已在应用上认证Game Center,此时你需要通过异步调用获得这些消息。值得欣慰的是,苹果在此设有API调用,我将此放置在用户认证访问的CompletionHandler中。

若你采用Ray Wenderlich网站的代码,那么你就既能够运用此方法,又拥有新方法。将NSMutableDictionary * self.achievementsDescDictionary添加至所有处理游戏Game Center代码的类(游戏邦注:它会在随后的体验中存储成就数据)。

- (void)authenticateLocalUser { if (!gameCenterAvailable) return; NSLog(@”Authenticating local user…”); if ([GKLocalPlayer localPlayer].authenticated == NO) { [[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error) { if([GKLocalPlayer localPlayer].isAuthenticated){ [self retrieveAchievmentMetadata]; //Here is the new code } }]; } } //Here is the new method. - (void) retrieveAchievmentMetadata { self.achievementsDescDictionary = [[NSMutableDictionary alloc] initWithCapacity:2]; [GKAchievementDescription loadAchievementDescriptionsWithCompletionHandler: ^(NSArray *descriptions, NSError *error) { if (error != nil) { NSLog(@"Error %@", error); } else { if (descriptions != nil){ for (GKAchievementDescription* a in descriptions) { [achievementsDescDictionary setObject: a forKey: a.identifier]; } } } }]; } “retrieveAchievmentMetadata”方法会初始化所有信息库,然后调用游戏所有成就描述,进行循环,将它们添加至信息库。这属于异步调用,所以不应减缓游戏或项目的启动。 现在我们握有各成就的标题和描述,因此能够修改原始代码创造iOS 4/5的善意通知,其将通过Type One Error代码连续展示所有成就。 - (void)reportAchievement:(NSString *)identifier percentComplete:(double)percentComplete { GKAchievement* achievement = [[GKAchievement alloc] initWithIdentifier:identifier]; achievement.percentComplete = percentComplete; if (percentComplete == 100.0) { //Show banners manually GKAchievementDescription *desc = [achievementsDescDictionary objectForKey:identifier]; //Update pull achievement description for dictionary [[GKAchievementHandler defaultHandler] notifyAchievement:desc]; //Display to user } [achievementsToReport addObject:achievement]; //Queue up the achievement to be sent [self save]; if (!gameCenterAvailable || !userAuthenticated) return; [self sendAchievement:achievement]; //Try to send achievement } - (void)sendAchievement:(GKAchievement *)achievement { [achievement reportAchievementWithCompletionHandler: ^(NSError *error) { dispatch_async(dispatch_get_main_queue(), ^(void) { if (error == NULL) { NSLog(@"Successfully sent archievement!"); [achievementsToReport removeObject:achievement]; //Remove Achievement from queue. } else { NSLog(@”Achievement failed to send… will try again \ later. Reason: %@”, error.localizedDescription); } }); }]; }

如果你想让成就中显示为你在itunes connect中设置成就的自定义图片,首先将通知部分代码修改成如下代码:

if (percentComplete == 100.0) { //Show banners manually GKAchievementDescription *desc = [achievementsDescDictionary objectForKey:identifier]; [desc loadImageWithCompletionHandler:^(UIImage *image, NSError *error) { if (error == nil) { [[GKAchievementHandler defaultHandler] setImage:desc.image]; //If image found, updates the image to the achievement image. } [[GKAchievementHandler defaultHandler] notifyAchievement:desc]; }]; }

使用以上方式默认为横屏显示成就通知,如果想换成竖屏提示,那么这里Himi给出参考代码:

(责任编辑:admin)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
用户名: 验证码: 点击我更换图片
栏目列表
推荐内容
中国法律网 版权所有 邮箱:service@5Law.cn 建议使用:1024x768分辨率,16位以上颜色 | 京ICP备2023040428号-1联系我们 有事点这里    [切换城市▲] 公司法
400-8919-913 工作日:9:00-18:00
周 六:9:00-12:00

法律咨询5分钟内回复
请用微信扫描二维码
关闭

关注网站CEO微信,与CEO对话