我正在使用 xcode 7beta3 中的 swift 在 sprite kit 中制作 iPad 游戏,我希望在游戏完成后将游戏结果发送给用户的电子邮件。用户应该按下一个名为发送并重定向到他们可以输入他们的电子邮件地址并发送消息的按钮。但我不知道如何制作和发送电子邮件。
我一直在互联网上搜索这个问题的答案,但都是旧版本的答案。我希望你能帮忙。
提前致谢
编辑: 我一直在寻找更多,我找到了一个解决方案(这里: http: //kellyegan.net/sending-files-using-swift/),但我仍然有问题。在我的 GameViewController 中,我添加了:
override func viewDidLoad() {
super.viewDidLoad()
let scene = StartGameScene(size: view.bounds.size)
let skView = view as! SKView
skView.showsFPS = true
skView.showsNodeCount = true
skView.ignoresSiblingOrder = true
scene.scaleMode = .ResizeFill
skView.presentScene(scene)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
internal func sendEmail() {
//Check to see the device can send email.
if( MFMailComposeViewController.canSendMail() ) {
print("Can send email.")
let mailComposer = MFMailComposeViewController()
mailComposer.mailComposeDelegate = self
//Set the subject and message of the email
mailComposer.setSubject("Have you heard a swift?")
mailComposer.setMessageBody("This is what they sound like.", isHTML: false)
if let filePath = NSBundle.mainBundle().pathForResource("Math", ofType: "txt") {
print("File path loaded.")
if let fileData = NSData(contentsOfFile: filePath) {
print("File data loaded.")
mailComposer.addAttachmentData(fileData, mimeType: "text/plain", fileName: "Math")
}
}
self.presentViewController(mailComposer, animated: true, completion: nil)
}
}
func mailComposeController(controller: MFMailComposeViewController, didFinishWithResult result: MFMailComposeResult, error: NSError?) {
self.dismissViewControllerAnimated(true, completion: nil)
}
当您按下按钮时,sendMail() 在我的一个游戏场景中被调用。问题是当我按下该按钮时出现错误。它打印出来
可以发邮件。文件路径已加载。文件数据已加载。
正如它应该的那样,但随后它给出了一个错误:
无法将“UIView”(0x1964ea508)类型的值转换为“SKView”(0x19624f560)。
我认为问题是 self.presentViewController(),但我不知道如何解决它。