我正在使用https://github.com/stelford/Titanium-Calendar
我的问题是它不会要求用户授予他们日历的权限。我知道代码有效,因为我使用了一个崩溃的不同模块,但是它强制我用于测试的手机授予它权限。所以现在我的测试手机运行良好,但没有其他人这样做,因为它实际上不会首先请求许可。
我不知道如何让这个日历模块强制请求用户访问他们的日历。任何帮助都会很棒..
我正在使用https://github.com/stelford/Titanium-Calendar
我的问题是它不会要求用户授予他们日历的权限。我知道代码有效,因为我使用了一个崩溃的不同模块,但是它强制我用于测试的手机授予它权限。所以现在我的测试手机运行良好,但没有其他人这样做,因为它实际上不会首先请求许可。
我不知道如何让这个日历模块强制请求用户访问他们的日历。任何帮助都会很棒..
首先,您需要检查设备以查看它是否甚至请求访问日历。为此,请转到Settings
-> Privacy
--> Calendars
。如果您的应用程序已请求访问日历,它将显示在那里。
(来源:iphone-to-ipad.com)
(来源:iphonehacks.com)
这个日历模块有几个问题。我将它们固定在 obj-c 中。我必须对日历模块做很多事情才能让它在 iPad 上顺利运行。如果您在 Titanium 论坛上查看此日历模块和我的名字(Blake Rogers),您应该能够找到我对 obj c 中的模块所做的一系列更改以解决问题。
要执行此修复,您实际上需要下载日历的 Xcode 项目。之后,您需要在Module/AgCalendarModule.m
文件中添加以下代码。用该文件中的以下内容替换该startup
方法。
替换代码后,您将需要使用build.py
(如果我没记错的话……已经有一段时间了)重新编译它,一旦使用 编译它,build.py
您就可以将该版本的模块添加回您当前的项目中工作。
-(void)startup
{
// this method is called when the module is first loaded
// you *must* call the superclass
[super startup];
EKEventStore *es = [[EKEventStore alloc] init];
[es requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
/* This code will run when uses has made his/her choice */
}];
NSLog(@"[INFO] %@ loaded",self);
}
老实说,Titanium 对我来说是一次可怕的经历。一旦我的应用程序变得比最初的概念证明更大并且涉及与远程 Web 服务器同步......我开始从内存泄漏中得到奇怪的错误,你无法重现,因为内存泄漏会在不同的时间攻击。
我目前正在切换(是的,从头开始重建整个应用程序)到 Xamarin(Monotouch),这很棒:)