UDN
Search public documentation:

TwitterIntegrationCH
English Translation
日本語訳
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 主页 > 平台架构界面框架 >Twitter集成

Twitter 集成


概述


Twitter集成让使用虚幻引擎3制作的游戏向玩家的Twitter账号发布信息。

注意: Twitter集成仅限在iOS平台上运行的游戏。

TwitterIntegration(Twitter集成)


TwitterIntegration 是一个基类,包括连接Twitter和同Twitter互动的功能。 该类从 PlatformInterfaceBase 继承,并使用了那个类中包含的代理系统。 每个平台(PC、iOS等)有它自己的继承于 TwitterIntegration 的子类,这些子类提供了针对那个特定平台的实现。

函数

  • Init - 引擎调用的事件来初始化Twitter集成。
  • CanShowTweetUI - 返回是否允许玩家使用集成的Twitter界面。 在iOS平台上,使用Twitter界面要求是使用iOS5以上的版本,并且用户的设备必须对Twitter使用授权。 如果界面不可用,则使用 TwitterRequest 方法替代。
  • ShowTweetUI [InitialMessage] [URL] [Picture] - 启用发布推文进程,使用平台来显示界面。 如果显示给用户的是互动界面(会执行FID_TweetUIComplete 代理),则返回True(真值)。 如果为FALSE(假值),您可以使用 TwitterRequest 方式使用Twitter 应用程序接口来手动发布推文。
    • InitialMessage – 可选项。 一个指定在界面中显示信息的字符串(用户可以进行编辑)。
    • URL - 可选项。 指定一个附加到推文中的URL的字符串。
    • Picture – 可选项。 一个指定了添加到推文中的图片名称的字符串 这应该是一张存在当前平台本地的图片。 平台的子类负责搜索所给图片。
  • AuthorizeAccounts - 开启允许游戏访问玩家Twitter信息的进程。 要求玩家对Twitter app进行授权。 如果授权进程开始,则返回真值(True),调用TID_AuthorizeComplete 代理。 GetNumAccounts() 应该在调用代理后返回到一些有效的账户。
  • GetNumAccounts - 返回 AuthorizeAccounts() 授权的Twitter账户数。
  • GetAccountName [AccountIndex] - 返回同所给索引相关的Twitter账户显示名称。
    • AccountIndex - 一个 Int 型值,指出了要获取其名称的Twitter账户的索引。
  • TwitterRequest [URL] [ParamKeysAndValues] [RequestMethod] [AccountIndex] - 使用Twitter 应用编程接口发送通用Twitter请求。 请参照 REST API Resources Twitter应用程序接口文档页面获得所有有效URL和参数的列表。
    • URL - 所请求的URL,可以是 http 或者 https (如果现有的平台支持发送 https的话)。
    • ParamKeysAndValues - 一个指定发送额外参数的字符串数组。 分开键和数值 < "key1", "value1", "key2", "value2" >.
    • RequestMethod - 用来发送请求的 ETwitterRequestMethod
      • TRM_Get - 使用GET请求方式来发送请求
      • TRM_Post - 使用POST请求方式来发送请求。
      • TRM_Delete -使用DELETE请求方式来发送请求。
    • AccountIndex - 一个指出了要为其发送请求的Twitter账户索引的 Int 型值。

Delegates(代理)

ETwitterIntegrationDelegate 枚举定义了可以收到回调的代理种类的ID。 通过使用 Platform Interface Delegates(平台接口代理) 系统来为这些类型中的每一个分配代理。

  • TID_AuthorizeComplete - 当收到一个来自授权进程的响应时,执行分配给这个ID的代理
    • bSuccessful - 如果是真值(true),则允许访问玩家的Twitter账户。
    • Data - 不包含数据。
  • TID_TweetUIComplete - 当完成推文界面时执行分配给这个ID的代理
    • bSuccessful - 如果为真值(TRUE),则成功完成推文界面。
    • Data - 不包含数据。
  • TID_RequestComplete - 当收到来自Twitter的响应时,则执行这个ID分配到代理。
    • bSuccessful - 如果请求没有错误成功完成,则返回真值(TRUE)。
    • Data - 包括来自网络请求的响应字符串。

实现细节


在虚幻3引擎中设置并使用Twitter集成的大致工作流程如下所示:

  1. 通过调用 PlatformInterfaceBase 类的静态函数 GetTwitterIntegration() 来取得对 TwitterIntegration 对象的引用。 然后设置您的授权,Twitter请求、推文界面回调代理,然后为用户授权Twitter账户;这些处理一般在 PostBeginPlay() 或其他初始化函数中进行,根据您放置Twitter功能的位置不同而有所区别。
       var TwitterIntegration Twitter;
    
       ...
    
       Twitter = class'PlatformInterfaceBase'.static.GetTwitterIntegration();
       Twitter.AddDelegate(TID_AuthorizeComplete, OnTwitterAuthorizeComplete);
       Twitter.AddDelegate(TID_TweetUIComplete, OnTweetComplete);
       Twitter.AddDelegate(TID_RequestComplete, OnTwitterRequestComplete);
       Twitter.AuthorizeAccounts();
       
    如果用户还没有授权Twitter的使用,那么 AuthorizeAccounts() 会提醒用户对它进行授权。
    twitter_auth.jpg
    OnTwitterAuthorizeCompleteOnTweetCompleteOnTwitterRequestComplete 只是一些例子。 这些可以是任何和 PlatformInterfaceDelegate 代理的签名相匹配的函数的名称。
       delegate PlatformInterfaceDelegate(const out PlatformInterfaceDelegateResult Result);
       
  2. 要初始化发送推文的进程,在 TwitterIntegration 对象上调用 CanShowTweetUI() ,然后或者通过使用 ShowTweetUI() 来显示推文界面,或者必要的话可以使用 TwitterRequest() 来手动发送推文。
       local array<string> KeyValues;
    
       if (Twitter.CanShowTweetUI())
       {
           Twitter.ShowTweetUI("Tweeting from UE3", "http://www.epicgames.com", "Icon");
       }
       else
       {
           KeyValues.AddItem("status");
           KeyValues.AddItem("Tweeting from UE3");
           Twitter.TwitterRequest("http://api.twitter.com/1/statuses/update.json", KeyValues, TRM_POST, 0);
       }
       
    然后向用户展示推文界面(如果可能的话),让他们编辑信息。
    twitter_ui.jpg

可以在 UDKBase\Classes 目录中的 CloudPC.uc 脚本中找到基本实现,并且可以使用 CloudGame 游戏类型进行测试。