当我使用 onenote:// 从我的ipad应用程序打开OneNote时,会打开OneNote,但会显示一条错误消息
无法打开链接“One Note中此链接存在问题。
这是我的代码
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"onenote://"]];
PS:在尝试此操作之前,必须在Ipad设备中安装OneNote for Ipad。
这是OneNote的正确URL SCHEME - onenote://
或者我做错了。
错误消息注意到关闭时会产生问题,但我只是想摆脱错误消息。 也可以从我的应用程序将参数传递给OneNote。
帮助赞赏!!
答案 0 :(得分:2)
使用“onenote-cmd://”可以打开OneNote而不会出现任何错误。
答案 1 :(得分:1)
您收到错误的原因是iOS OneNote客户端不支持由协议处理程序启动而没有为笔记本,部分和页面完成参数(它不知道导航到的地方)。如果你只是在没有指定目的地的情况下使用onenote://
,那就是设计""您将收到错误。
我们建议您在从应用程序打开OneNote时链接到特定页面以避免错误。 OneNote REST API返回指向您在创建页面时创建的页面的链接,您还可以使用"复制链接到页面"从iOS应用程序中运行。
答案 2 :(得分:1)
正如Nick指出的那样,OneNote应用程序需要额外的参数才能成功打开,而不显示“无法打开链接”警报。以下是我为解决问题所做的工作:
注意:在我的应用中,用户已使用LiveSDK(Microsoft帐户登录)登录,因此我保存了访问令牌。
我创建了一个“授权OneNote”方法,该方法向OneNote API发送请求以在用户的默认笔记本中创建“页面”:
(void)AuthorizeOneNote
{
NSString *date = [NSString stringWithFormat:@"%@", [NSDate date]];
NSString *simpleHtml = [NSString stringWithFormat:
@"<html>"
"<head>"
"<title>\"%@\"</title>"
"<meta name=\"created\" content=\"%@\" />"
"</head>"
"<body>"
"<p></p>"
"</body>"
"</html>", @"Page Title", date];
NSData *presentation = [simpleHtml dataUsingEncoding:NSUTF8StringEncoding];
NSString *endpointToRequest = @"https://www.onenote.com/api/v1.0/pages";
NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:endpointToRequest]];
request.HTTPMethod = @"POST";
request.HTTPBody = presentation;
[request addValue:@"text/html" forHTTPHeaderField:@"Content-Type"];
[request setValue:[@"Bearer " stringByAppendingString:@"LIVE-ID-ACCESS-TOKEN"] forHTTPHeaderField:@"Authorization"];
objConnectionOneNote = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
}
这是我处理响应的方式:
(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
if (connection == objConnectionOneNote)
{
NSString *strData = [[NSString alloc]initWithData:objData encoding:NSUTF8StringEncoding];
NSMutableDictionary *dictData1 = [[NSMutableDictionary alloc] init];
dictData1 = [NSJSONSerialization JSONObjectWithData:objData options:kNilOptions error:nil];
oneNoteClientUrl = [dictData1 valueForKeyPath:@"links.oneNoteClientUrl.href"];
NSLog(@"Response: %@",oneNoteClientUrl);
NSLog(@"Response: %@",strData);
// Launch OneNote Client
if([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"onenote://"]])
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:oneNoteClientUrl]];
}
else
{
[[UIApplication sharedApplication] openURL: [NSURL URLWithString:@"https://itunes.apple.com/us/app/microsoft-onenote-for-iphone/id410395246?mt=8&uo=4"]];
}
}
这里有几点需要注意:
每次从应用程序启动OneNote时,都会创建一个新页面。要打开同一页面,您可以保留返回的URL并使用它来打开客户端。
MS Live身份验证的访问令牌将在大约一小时后到期。发生这种情况时,OneNote API请求将返回401 Unauthorized响应。为了缓解这种情况,您可以使用刷新令牌刷新访问令牌,刷新令牌也会在实时身份验证期间返回。
希望它有所帮助!
答案 3 :(得分:0)
随着iOS新工作流程的增加,我非常有兴趣了解如何将OneNote融入我的行动中。
我不想制作应用程序,到目前为止,我找不到任何针对OneNote的高级网址方案的示例,因此能够获取可在iPhone或iPad上打开OneNote应用程序的链接并将其转到正确的笔记本和页面将是伟大的。
理想情况下,我们可以使用一个url方案,OneNote://可以工作,但需要笔记本和页面的其他参数,以及如何创建一个新的笔记本或页面。
工作流程超出了IFTTT的范围(取决于具体情况),并且由于自动化的可能性,我们真的期待开始更多地使用OneNote。