0

我正在使用https://github.com/stelford/Titanium-Calendar

我的问题是它不会要求用户授予他们日历的权限。我知道代码有效,因为我使用了一个崩溃的不同模块,但是它强制我用于测试的手机授予它权限。所以现在我的测试手机运行良好,但没有其他人这样做,因为它实际上不会首先请求许可。

我不知道如何让这个日历模块强制请求用户访问他们的日历。任何帮助都会很棒..

4

1 回答 1

0

首先,您需要检查设备以查看它是否甚至请求访问日历。为此,请转到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),这很棒:)

于 2013-02-14T17:29:03.300 回答