我希望能夠將數據從iOS應用程序(Objective-C)發送到HTML5網站或Google電子表格,或者任何可以從任何地方訪問數據的地方。將數據從iOS應用程序發送到HTML5網站
回答
- 代碼服務器接受查詢。
- 代碼查詢服務器的iOS應用程序。也許使用AFNetworking。
- 從任何地方訪問數據。
您可以創建一個用php編寫的頁面,它接受從ios應用發送的數據,然後php將數據發送到服務器。服務器包含一個包含要填充的行的表。
或者您可以使用後端提供程序來爲您做這件事,下面是一個link來解釋它是如何工作的(來自raywenderlich)。
我強烈推薦的是Google Apps Script,無需服務器(使用Google的服務器)即可輕鬆完成,而且它的免費的。但是,你必須知道JavaScript(我可以幫助一個很好的數額,因爲我剛剛完成這項工作)
我將假設你在POST時(當你給一個服務器數據時,它被稱爲簡化事物),你想要退出(即一些JSON),說'成功'或提供更多的信息。另外,我現在要預先警告您:這不適用於企業軟件 - 因爲您需要真正的數據庫和服務器(即SQL或noSQL),但是要與其他非腳本編寫人員共享,這會爲您提供內置的可共享GUI (圖形用戶界面)。
好的,放到代碼上。轉到script.google.com並選擇左側的「空白項目」。現在3/4的代碼將處理請求b/c向谷歌電子表格添加一行實際上是一行(這是多麼強大)。
首先,在添加此功能:
function doGet(e) {
if (e.parameter.get) {
Logger.log("GETing")
//return getAsJSON()
} else if (e.parameter.post) {
Logger.log("POSTing")
//return dopost(e)
} else {
//If don't do anything, get as JSON
Logger.log("GETing")
//return getAsJSON()
}
}
去跑 - > doGet和接受權限的彈出(現在做到這一點,並在年底或任何時候,它提供了一個錯誤「授權才能執行「)
現在,轉到文件 - >管理版本 - >保存新版本 然後發佈 - >部署爲Web應用程序 - >使項目版本成爲最新的數字,並確保它是」執行應用程序如:「我和」誰有權訪問該應用程序:「任何人(甚至匿名)。
打開下方的「當前網站應用網址:和最新的代碼」鏈接。
第二個鏈接(最新的代碼)應該看起來像https://script.google.com/macros/s/AKfycbxHk_GXziSAwSH6umVyz3LnnbgpkA9BnqvL2ILeF/dev。在其末尾添加「?post = true」,然後刷新頁面。返回到文本編輯器頁面並按CTRL + 輸入。你應該看到「發佈」;將URL中的「post」替換爲「get」並刷新。退出「記錄輸出」,然後按CTRL + 再次輸入。你應該看到「正在接受」。
幾乎在那裏;現在,函數doPost
(首先取消上述doGet
函數中的所有內容,除了'//如果不做任何事情,請以JSON形式提交')並將您的URL更改回?從?得到。你非常不清楚你想添加到你的工作表,所以我會假設你想要添加一行2個單元格。添加到URL這樣的:
&column1="TESTING"&column2="WOW"
這是什麼東西做的是告訴我們的代碼(1)我們想張貼和(2)的新行應該測試,WOW(在不同的細胞)。製作新的Google電子表格,並複製「d /」和「/ edit」之間的內容,將其放入電子表格和ID並放入電子郵件;如果出現問題,它會通過電子郵件發送給您,請保持開放。該代碼是
function doPost(e) {
try {
Logger.log(e)
if (!(e.parameter.column1) || !(e.parameter.column2)) {
MailApp.sendEmail("YOUR EMAIL HERE", "Problem with POST to gSheet", "Not correct parameters need column1 and column2 and both need to be '=something' ")
} else {
var allVals = SpreadsheetApp.openById("YOUR SPREADSHEET ID HERE").getActiveSheet().appendRow([e.parameter.column1, e.parameter.column2])
return getAsJSON()
}
} catch (e) {
MailApp.sendEmail("YOUR EMAIL HERE", "Problem with POST to gSheet", e)
}
}
和getASJSON
是
function getAsJSON(){
output = ContentService.createTextOutput()
output.append("DONE")
return output
}
這是非常可能來回報您的電子表格的JSON但這已經超出了這個範圍,並很好的鍛鍊。
注意:它會將您重定向到「googleusercontent」域。如果是這樣,請不要使用該URL或刷新該URL:返回到/ dev或/ exec URL。
在iOS方面,您所要做的就是使用上面構建的URL進行POST請求,這非常簡單。你提到Objective-C,但我也會提供Swift。
Objective-C的:
- (NSURLResponse *)POST:(NSString *)parameters {
NSString *baseURL = @"https://script.google.com/macros/s/your_ID/dev?post=true";
NSURL *url = [NSURL URLWithString: [baseURL stringByAppendingString:parameters]]; // Set your URL here - don't forget to escape quotation marks when you pass the request parameters to the method
NSURLSession *session = [NSURLSession sharedSession];
__block NSURLResponse *postResponse;
NSURLSessionDataTask *dataTask = [session dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
// What to do after the POST has completed (if the POST returns any data, it'll be stored in the response parameter specified above); use dispatch_async to wait until the request has completed
dispatch_async(dispatch_get_main_queue(), ^(void) {
postResponse = response;
});
}];
[dataTask resume];
return postResponse;
}
斯威夫特:
func POST(parameters: String) -> NSURLResponse? {
let url: NSURL = NSURL(string:"https://script.google.com/macros/s/your_ID/dev?post=true\(parameters)")! // Set your URL here - don't forget to escape quotation marks when you pass the request parameters to the function
let session: NSURLSession = NSURLSession.sharedSession()
var postResponse: NSURLResponse?
let dataTask: NSURLSessionDataTask = session.dataTaskWithURL(url, completionHandler: {(data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in // Closure
// What to do after the POST has completed (if the POST returns any data, it'll be stored in the response parameter specified above); use dispatch_async to wait until the request has completed
dispatch_async(dispatch_get_main_queue(), {
postResponse = response
})
})
dataTask.resume()
return postResponse
}
- 1. 如何從網站發送svg數據到android應用程序
- 2. 從網站發送數據到Windows應用程序
- 3. 如何將數據從airwatch發送到iOS應用程序
- 4. 如何將數據從網站服務器發送到android應用程序
- 5. 從網站到應用程序到iOS上的網站
- 6. iOS應用程序將數據發送到Rest API服務
- 7. 從ios應用程序發送對象數據到服務器應用程序
- 8. 從iOS應用程序發送數據到PHP腳本
- 9. 從Swift中的iOS發送數據到Params應用程序
- 10. android.os.NetworkOnMainThreadException從Android應用程序發佈數據到網站
- 11. 從Android應用程序發送數據到B應用程序
- 12. 從我的網站發送敏感數據到我的C#應用程序
- 13. 發送數據到網站
- 14. 將參數發送到遠程網站
- 15. 從Arduino發送數據到網站
- 16. 從vb.net應用程序發送密碼到網站
- 17. Android:從webview網站發送圖像URI到應用程序
- 18. 從網站發送文件到C應用程序
- 19. 如何從網站發送信息到Android應用程序
- 20. 將數據發送到一個網站,讓搜索的iOS
- 21. 在React.js網絡應用程序發送數據到數據庫
- 22. 將數據從Windows應用程序發送到控制檯應用程序
- 23. 應用程序啓動計數併發送到網站
- 24. 如何將數據從iOS應用程序發送到http服務器
- 25. 將數據從Arduino發送到應用程序
- 26. 如何將數據從android應用程序發送到asp.net webservices
- 27. 將數據從servlet發送到android應用程序
- 28. 將數據從AJAX發送到NODEJS應用程序時出錯
- 29. 將數據從iPhone發送到C#.net應用程序
- 30. 將簡單的數據從wp7發送到winforms應用程序
是的,任何困惑的讀者,這是一個聯合的努力。 AstroCB和我在一個非常類似的項目上合作,在那裏我做了後端,他做了應用前端。我們認爲我們每個人都可以幫助 – JZL003
哇感謝您的幫助!我不確定這是什麼意思,但是當我嘗試運行doGet時,我得到這個錯誤「TypeError:Can not read property」from undefined。(第2行,文件「Code」)「 – Jonathon
也只是爲了澄清,on在工作表中,我想要在每個人姓名旁邊的單元格中包含一個數字的人員名稱列。我希望應用每次在應用中發生某個事件時都能夠將1添加到某個人的號碼。我不確定何時能夠測試應用程序,因爲我還沒有註冊到蘋果開發人員計劃中,並且該應用程序依賴於使用無法模擬的設備相機。無論如何,再次感謝! – Jonathon