gpt4 book ai didi

ios - 将数据从 iOS 应用程序发送到 HTML5 网站

转载 作者:行者123 更新时间:2023-11-29 10:34:22 24 4
gpt4 key购买 nike

我希望能够将数据从 iOS 应用程序 (Objective-C) 发送到 HTML5 网站或 Google 电子表格或任何可以从任何地方访问数据的地方。

最佳答案

我强烈推荐的是Google Apps Script ,它可以在没有服务器(您使用 Google 的服务器)的情况下轻松地做到这一点,而且它是免费。但是,你必须了解 JavaScript(我可以提供很多帮助,因为我刚刚完成这个)

我假设当您 POST 时(当您提供服务器数据时,为了简化事情,它被称为什么)您想要返回一些东西(即一些 JSON )说“成功”或返回更多信息。另外,我现在要预先警告你:这不是针对企业软件的——因为你需要一个真正的数据库和服务器(即 SQL 或 noSQL),但为了与其他非脚本编写者共享,这为你提供了一个内置的可共享 GUI (图形用户界面)。

好的,进入代码。转到 script.google.com并在左侧选择“空白项目”。现在,这段代码的 3/4 将用于处理请求 b/c,向 google 电子表格添加一行实际上就是一行(这就是它的强大之处)。

首先,添加这个函数:

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 应用程序 -> 使项目版本为最新版本并确保它是“执行应用程序为:”我和“谁有权访问该应用程序:”任何人(甚至匿名)。

打开其下方的“当前网络应用程序 URL:和最新代码”链接。

第二个链接(最新代码)应该类似于 https://script.google.com/macros/s/AKfycbxHk_GXziSAwSH6umVyz3LnnbgpkA9BnqvL2ILeF/dev .在其末尾添加“?post=true”,然后刷新页面。返回文本编辑器页面并按 CTRL+Enter。你应该看到“发布”;将 URL 中的“post”替换为“get”并刷新。退出“日志输出”,然后再次按 CTRL+Enter。您应该会看到“正在获取”。

快到了;现在,函数 doPost(首先取消注释上面 doGet 函数中的所有内容,除了 '//If don't do anything, get as JSON')并将你的 URL 改回?从?得到。您非常不清楚要添加到工作表中的内容,因此我假设您想要添加包含 2 个单元格的行。将此添加到 URL:

&column1="TESTING"&column2="WOW"

它的作用是告诉我们的代码 (1) 我们想要 POST 和 (2) 新行应该是 TESTING, 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;
}

swift :

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
}

关于ios - 将数据从 iOS 应用程序发送到 HTML5 网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27871817/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com