2012-09-27 31 views
11

我正在使用TWTweetComposeViewController訪問用戶的Twitter帳戶,他/她在Settings - > Twitter中添加了這個帳戶。當應用程序試圖訪問一個Twitter帳戶,它應presente一個警報,類似這樣的消息:「[App]」想要訪問Twitter帳戶警報沒有在iOS 6中顯示

"[AppName] Would Like Access to Twitter Accounts" 

爲了您可以點擊或者「不允許」或「確定」。我想這是操作系統本身顯示的警報,因爲點擊「確定」實際上可以訪問Twitter。

當我在iOS 5.x設備上測試時會顯示以上警報,但在iOS 6設備上測試時不會出現上述警報。我希望當我發送以下信息將提交該通知後,我還沒有獲得在設置我到Twitter的應用程序訪問:

[TWTweetComposeViewController canSendTweet] 

如上所述,它不會發生。有誰知道這是否是iOS 6中的一個已知錯誤?我一直無法在SO上找到任何帖子,因爲我找不到其他原因,我認爲這是一個錯誤。與iOS 5.1與iOS 6.0

更新

我用

  • iPhone 4
  • iPhone 4:

    僅供參考,我在下面的兩個設備上測試該DETweetComposeViewController,它通過以下方式檢查iOS 5:

    + (BOOL)de_isIOS5 
    { 
        return (NSClassFromString(@"NSJSONSerialization") != nil); 
    } 
    

    但是由於NSJSONSerialization類也是在iOS 6中表示的,所以這不應該是原因。

回答

30

我一直在iOS 5.1和iOS 6.0上整理同樣的東西。

只要在「設置」中配置了Twitter帳戶,我的應用就不會再要求iOS 6.0中的Twitter訪問權限,只需顯示TWTweetComposeViewController即可。我已通過在Settings > Privacy > Twitter中手動關閉我的應用的Twitter訪問來驗證此情況。關閉訪問權限後,我被拒絕使用TWRequest創建友誼的能力,但仍可彈出TWTweetComposeViewController。我每次都會在iOS 5.1中獲得提示,直到我授予訪問權限。

這對我有意義。所有TWTweetComposeViewController都會啓動推文,因此如果用戶已經配置了設備範圍的Twitter帳戶,則該權限應該足以從任何地方發送推文。這實際上是一個不必要的額外步驟,必須授予每個應用的訪問權限。

如果沒有Twitter賬戶仍未配置,TWTweetComposeViewController將與此消息提示壽:

No Twitter Accounts 
There are no Twitter accounts 
configured. You can add or create 
a Twitter account in Settings. 

與方便的按鈕「設置」和「取消」。

對此的一個旁註:iOS 6也僅在應用程序首次請求訪問時提示"[AppName] Would Like Access to Twitter Accounts"消息。

之後,您必須重置Settings > General > Reset > Reset Location & Privacy以獲取詢問提示。即使您刪除並重新安裝/重建應用程序,「已問過一次」設置仍然存在。您可以在Settings > Privacy中手動啓用訪問權限,但重置是獲得重新顯示提示的唯一方式(如果這對您的測試非常重要)。

我發現了兩件額外的東西。在[ACAccountStore requestAccessToAccountsWithType:options:completion:]完成塊,如果granted == NO

  1. 如果[error code] == 6,您的用戶沒有定義帳戶。
  2. 如果error == nil,您的用戶拒絕您的應用的訪問,無論是現在或以前。如果以前發生過這種情況,系統會默認忽略該請求,屏幕上不會顯示警報,也不會點擊「不允許」按鈕。
+0

非常感謝您的回答。我最近發現TWTweetComposeViewController從iOS 6開始不推薦使用,而是Apple希望我們使用SLComposeViewController。我會測試它是否與SLComposeVC相同,併發布結果。 –

+0

我一直在模擬器中使用iOS6進行測試,並且從未見過「[AppName]會喜歡訪問Twitter帳戶」消息 - 它只是在沒有提示權限的情況下發送。很奇怪。尚未嘗試使用設備。 –

+0

我建議你在設備上試試! – Ahsan

相關問題