如何在我的 Sprite Kit 游戏应用中实现 Facebook 和 Twitter 发布?

Posted

技术标签:

【中文标题】如何在我的 Sprite Kit 游戏应用中实现 Facebook 和 Twitter 发布?【英文标题】:How to implement Facebook and Twitter posting in my Sprite Kit game app? 【发布时间】:2015-01-16 13:53:00 【问题描述】:

我已经尝试了我在 Stack Overflow 和其他任何地方在线上看到的所有内容,但我无法弄清楚如何从我的 SKScene 类中呈现 viewController。我有 3 个场景,其中一个场景中有名为“buttonFacebook”和“buttonTwitter”的 Facebook/Twitter 节点。我正在使用 Switch 语句来检查 touchesBegan 中的节点名称。

我认为最接近实现这一目标的最佳帖子在这里:swift spritekit Facebook share button

在我的 SKScene 类“GameSceneGamePlay”中,如果我的 Switch 能够识别何时触摸 Facebook 按钮,我就有这个案例:

case "facebook":
        func showTweetSheet() 
            let tweetSheet = SLComposeViewController(forServiceType: SLServiceTypeTwitter)
            tweetSheet.completionHandler = 
                result in
                switch result 
                case SLComposeViewControllerResult.Cancelled:
                    //Add code to deal with it being cancelled
                    break

                case SLComposeViewControllerResult.Done:
                    //Add code here to deal with it being completed
                    //Remember that dimissing the view is done for you, and sending the tweet to social media is automatic too. You could use this to give in game rewards?
                    break
                
            

            tweetSheet.setInitialText("Test Twitter") //The default text in the tweet
            tweetSheet.addImage(UIImage(named: "TestImage.png")) //Add an image if you like?
            tweetSheet.addURL(NSURL(string: "http://twitter.com")) //A url which takes you into safari if tapped on

            self.presentViewController(tweetSheet, animated: false, completion: 
                //Optional completion statement
            )
        

当我尝试执行 self.presentViewController(tweetSheet, animated: false, ....“GameSceneGamePlay 没有名为 presentViewController 的成员”时出现错误。

我正在尝试使用上面引用的帖子中的这 2 条语句来触发该函数,但我无法克服 presentViewController 的错误。

NSNotificationCenter.defaultCenter().postNotificationName("facebookPost", object: nil)

NSNotificationCenter.defaultCenter().addObserver(self, selector: "showTweetSheet", name: "facebookPost", object: nil)

有人可以给我一些建议如何克服这个错误,或者我是否/如何需要创建一个新的 viewController?我尝试使用 UIViewController 创建一个类,但也无法呈现。

【问题讨论】:

【参考方案1】:

您的问题是您试图从 GameSceneGamePlay 中呈现 UIViewController,但在您自己编写时,GameSceneGamePlay 是 SKScene 的一个实例,而不是 UIViewController。

presentViewController 是在 UIViewController 而不是 SKScene 上找到的方法,这就是您收到错误的原因。

要解决这个问题,您可以保留对呈现您的 SKScene 的 UIViewController 的引用,如 this post 中所述,然后要求该视图控制器呈现您的 tweetSheet。

【讨论】:

以上是关于如何在我的 Sprite Kit 游戏应用中实现 Facebook 和 Twitter 发布?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swift 2(Xcode 7)在我的 Sprite Kit 游戏中为背景音乐设置静音按钮?

背景图像大小 Sprite Kit 游戏

iOS 如何在 Sprite Kit 游戏中创建音频淡入/淡出效果?

平台游戏中的 Sprite Kit NPC 随机移动

我的 Sprite Kit 游戏第一次播放音频变慢?

Sprite-kit:检测左右触摸