Отправить сообщение другу через Facebook SDK из приложения iOS
Я слышал, что API чата для Facebook устарел пару лет назад, но мне интересно, можно ли с помощью нового API мессенджера отправить сообщение другу через Facebook. Пользователь входит в систему с помощью кнопки входа в систему и получает информацию с графическим запросом, и теперь я хочу отправить тестовое сообщение.
Вот код для входа (работает)
class ViewController: UIViewController, FBSDKLoginButtonDelegate {
var currentUserIDString : String?
override func viewDidLoad() {
super.viewDidLoad()
let facebookLoginButton = FBSDKLoginButton()
facebookLoginButton.delegate = self
facebookLoginButton.center = self.view.center
self.view.addSubview(facebookLoginButton)
let button : UIButton = FBSDKMessengerShareButton.circularButtonWithStyle(FBSDKMessengerShareButtonStyle.Blue, width: 80)
button.addTarget(self, action: "shareTest", forControlEvents: UIControlEvents.TouchUpInside)
button.frame = CGRectMake(self.view.frame.size.width/2 - 40, 390, 80, 80)
self.view.addSubview(button)
}
// other methods
}
Вход в систему делегата, получение информации о пользователе (также работает)
func loginButton(loginButton: FBSDKLoginButton!, didCompleteWithResult result: FBSDKLoginManagerLoginResult!, error: NSError!) {
let graphRequest = FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, gender, email"])
graphRequest.startWithCompletionHandler { (connection, result, error) -> Void in
if error != nil {
print(error.localizedDescription)
}
else if let result = result {
self.currentUserIDString = result["id"] as? String
print(self.currentUserIDString)
}
}
}
Метод Share, у которого возникли некоторые проблемы... код в словаре параметров и полях, вероятно, неверен, но документы в Facebook довольно скудны, поэтому трудно найти хорошие примеры.
func shareTestGraphRequest() {
if FBSDKAccessToken.currentAccessToken() != nil {
if FBSDKAccessToken.currentAccessToken().hasGranted("read_page_mailbox") {
//establish param dictionary here
let parameterDictionary = NSMutableDictionary()
parameterDictionary.setObject("This is a test message, I'm building an app!", forKey: "message")
parameterDictionary.setObject(self.currentUserIDString!, forKey: "from")
parameterDictionary.setObject([], forKey: "to")
let graphRequest = FBSDKGraphRequest.init(graphPath: "/{message-id}", parameters: parameterDictionary as [NSObject : AnyObject], HTTPMethod: "POST")
graphRequest.startWithCompletionHandler { (connection, result, error) -> Void in
}
}
}
else {
let loginManager = FBSDKLoginManager()
loginManager.logInWithPublishPermissions(["read_page_mailbox"], fromViewController: self, handler: { (result, error) -> Void in
if error != nil {
print(error)
}
else if let result = result {
print(result)
}
})
}
}
Спасибо за помощь!
1 ответ
С помощью интеграции Facebook Messenger SDK вы можете отправить сообщение своим друзьям. Но это просто позволяет отправлять такие медиа, как изображения, GIF, видео, и вы не можете отправлять простой текст через этот SDK.