-1
如果iPhone上的某個特定vc處於活動狀態,用戶就可以在前臺發送tweet(在手錶上指定的文本)。在AppDelegate中調用func會話didReceiveMessage
但是現在我想要進一步發送背景中的鳴叫。因此,用戶在手錶應用中指定文本,即使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中簡單使用它是不對的。爲了確保沒有其他原因,我設置了一個布爾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) 「),它在你的問題PLZ – Devhess