Пользователь может уже чирикать (текст, который был продиктован на часах) на переднем плане, если конкретный vc активен на iPhone.Вызов func session didReceiveMessage в AppDelegate
Сейчас я хочу сделать шаг вперед и отправить этот твит в фон. Таким образом, пользователь диктует текст в приложении часов и текст чирикает, даже если приложение на iPhone закрыто.
Я использовал этот код для определения:
let accountStore = ACAccountStore()
let accountType = ACAccountStore().accountTypeWithAccountTypeIdentifier(ACAccountTypeIdentifierTwitter)
var twitterAccount: ACAccount?
var session: WCSession!
И что для метода:
func session(session: WCSession, didReceiveMessage message: [String : AnyObject]) {
let message2Tweet = message["text2Tweet"]! as? String
dispatch_async(dispatch_get_main_queue(), {
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "CalledAppDelegate")
print("Nachricht in AppDelegate: \(message2Tweet)")
if(WCSession.isSupported()){
self.session = WCSession.defaultSession()
self.session.delegate = self
self.session.activateSession()
}
self.accountStore.requestAccessToAccountsWithType(self.accountType, options: nil) { (success, error) -> Void in
if !success {
print("Kein Zugriff")
} else {
let allAccounts = self.accountStore.accountsWithAccountType(self.accountType)
if allAccounts.count > 0 {
self.twitterAccount = allAccounts.last as? ACAccount
}
}
let url = NSURL(string: "https://api.twitter.com/1.1/statuses/update.json")
let txt = message2Tweet
if txt != "" {
let request = SLRequest(forServiceType: SLServiceTypeTwitter, requestMethod: .POST, URL: url, parameters: ["status": txt!])
request.account = self.twitterAccount
request.performRequestWithHandler { (data, response, error) -> Void in
if response.statusCode != 200 {
print(error)
} else {
print("No error")
}
}
}
}
})
}
Но это не работает в для- и фона.
Как это исправить?
Спасибо за ваш ответ! Я уже использовал это в AppDelegate. Но это бот, работающий еще раз. Вот почему я думал, что неправильно использовать это в AppDelegate. Чтобы убедиться, что нет другой причины, я устанавливаю для bool NSUserDefault значение true, если AppDelegate получает сообщение и проверяет, что в моем приложении с печатью на консоли. И это все еще ложно, поэтому сообщения не было. – Devhess
Это странно! Я пробовал это и его работу. Можете ли вы продемонстрировать реализацию didReceiveMessage? – Muneeba
'func session (session: WCSession, didReceiveMessage message: [String: AnyObject]) { let message2Tweet = message [" text2Tweet "]! в виде? Строка dispatch_async (dispatch_get_main_queue(), { \\ Весь код слишком долго ... NSUserDefaults.standardUserDefaults() SetBool (правда, forKey:. "CalledAppDelegate") печати ("Nachricht в AppDelegate: \ (message2Tweet) «) } ' – Devhess