Evolution does not receive CalDAV events from Baikal/ Sabre server - email

I am hosting a Baikal CalDAV server (0.9.2) to synchronize my calendars across devices but am stuck with the following issue:
I can set up calendar accounts on both my iPhone (iOS 16) and my desktop (Fedora 36 with GNOME 42.4 and Evolution mail client) and authenticate these clients with the server.
I can create calendar events in Evolution. These are synced correctly to Baikal and then pop up in the Calendar app on the iPhone. Very nice!
I can create calendar events in the Calendar app on the iPhone. These are synced correctly to Baikal. However, they do NOT show up in Evolution.
A second Fedora machine (same specs) does not receive either events from the server (neither the once created by the iPhone nor the ones created by the other Fedora/ Evolution client).
I have tried a whole array of possible solutions (different URIs, different calendars, completely re-installed the Baikal server...) without success. I can clearly authenticate each client with the server and I can see the .ics files being created in Baikal, but Evolution seems to fail with downloading any events stored there...
I am a bit out of options so any pointers/ ideas would be appreciated!
Thanks

Related

Sending iOS push notifications from my Machine?

I would like to add iOS push notification to my FREE iOS App
The push notification will be mainly advertising my other iOS applications. so I am expecting 1 or 2 push notifications every month
I checked service like urban airship, but I think it is expensive considering I have more than 1.5 Million active users.
So, what I am thinking of is collecting the devices token at Google App Engine ( java ), then whenever I want to send push notifications I export those tokens then send them from my Machine.
Is this is the right approach? what do you think?
Is there any framework that I could use instead of building things from scratch?
Many thanks
This approach looks ok to me. Having an app on Google App Engine to whom each of the iOS device is sending their device token. Later at any time utilizing a web page or web service running on Google App Engine APP you can push custom notification to all respective device tokens. Just keep in mind to filter the list of device tokens with obsoleted ones (in case somebody uninstall your app).
You may check http://code.google.com/p/javapns/ for APNS communication. I tried it couple of times and it worked really well.
You should also give http://www.scringo.com a try.
Among other things this framework does, it also gives you a free push notifications service to send push messages to all your users or some of them (based on your custom criteria).

Disabling caldav reminders in iPhone

I am writing a caldav server for our company which will be compatible with a number of clients, one of the key supported devices will be iPhone running iOS 4+.
This server will only support VEVENTs however when the server is initially configured under settings in the iPhone, the iPhone thinks that the server also supports VTODOs. As there is no VTODO calendar outlined, it then proceeds to try to create a default one on my server. The Warning in the console output reads: “This account is enabled for tasks, but has no task calendar. We’re going to create a default one” I return that MKCALENDAR request with an empty response with 403 status, however the phone doesn’t seem to realise it’s failed and still puts the Reminder list in the Reminders app. I’m not where I should be flagging to the phone that this account is not enabled for tasks.
I haven’t been able to find much information on caldav servers in general and none on what iOS supports and is expecting from a server. I have been adhering to the standards in multiple RFCs including 4791, 5545, 3744 and 4918 but have not been able to find any help for this particular issue. I have also looked through the developer resources provided by apple to no avail.
Any help or pointing in the right direction would be greatly appreciated.
Jo
We needed to support serving iCalendar events to iOS as well, and struggled with some of these issues. For our problem, the calendar was read-only to our target clients (which I'm guessing is likely not true for yours). The server task was dramatically simplified when we realized we could use the subscribed calendars option to just get a calendar feed without anything else:
Not exactly a direct answer to your problem, but hopefully useful as an option to consider.

Offline notifications in iOS

According to the APNS Reference at Apple.com, an iOS device cannot receive notifications while it's offline / not connection to 3G or WiFi or similar. Yesterday I found an application (Pillboxie) that claims to be able to notify users even though they're offline. I quote:
"In order to use reminder technology that doesn't requre a network connection, Pillboxie will only run on devices running iOS 4.0 or later."
and
"No network connection required!"
Both quotes are copied from the App Description in the App Store.
I have not succeeded to find out how this works and whether it is as reliable as APNS. Does anyone know anything about the offline noficiation service mentioned in the quote above?
Pillboxie uses UILocalNotification to do that.
It is totally implemented on the app itself, without the need of a server side notification or even the internet connection.
You will not be able to use that for sending push notification, from a server to the user device, which is the one that requires the internet connection (wi-fi or 3G).
You can read more about it in Apple's Local and Push Notification Programming Guide
I believe they refer to local notifications and not remote notifications.
Loacl notification are stored locally in the user device. And shot by the iOS itself.
From UIlocalnotification reference:
The operating system is responsible for delivering the notification at the proper time; the application does not have to be running for this to happen. Although local notifications are similar to remote notifications in that they are used for displaying alerts, playing sounds, and badging application icons, they are composed and delivered locally and do not require connection with remote servers.
I'm the developer of Pillboxie. Felipe is correct: Pillboxie uses UILocalNotifications to schedule its reminders. I chose local notifications over push for several reasons. There are pros and cons to either kind. I chose UILocalNotification because it made more sense with the serious medical nature of Pillboxie:
LOCAL NOTIFICATIONS
PROS: Don't need to manage your own server to interface with the APNS. Very reliable, always on time; Works for people who don't have a network connection often (iPod Touch and iPad users); Works when traveling overseas; Automatically adjusts to the current wall-clock time in the current system time zone (if you've set a reference time zone in the time zone property in the UILocalNotification).
CONS: Max of 64 notifications per app; Can only repeat in whole units of either 1 minute, 1 hour, 1 day, 1 week, etc. If repeating, can't set a stop date.
There are actually 2 types of notifications.
Push - generated by APNS require internet connection
Local - generated on device by the application
So the app you are reffering to might be using local notifications. Check docs for more

How do I upload files using http/ftp to iphone/ipad? (Eg. ifile, goodreader)

Is there any good advice on uploading files to the device? I've seen many apps create a http server on 80 or 8080 to upload files. Does that mean I have to implement a server too?
Are there any 3rd-party libraries? (Preferably open-source and non-GPL)
EDIT: I am going to upgrade files in the app for specific devices in a corporate environment, so the ipad pulling files from a central server is also an alternative. But I would have to send messages to these ipads to tell them to fetch those files.
But I would have to send messages to
these ipads to tell them to fetch
those files.
Push Notification Programming Guide
Or mail with custom URL scheme for launching your application.
iOS Application Programming Guide - Implementing Custom URL Schemes
I assume what you want is a kind of automatic update. An app do something by order from server without user's manual operation.
I don't know enterprise-license specific feature of iOS. But I believe there's no such enterprise-specific APIs. And as I know, automatic update is almost impossible. Because,
There is no system-level support for automatic update. (yet?)
So messaging and fetching feature should be implemented in app.
But no app is guaranteed to run in background for long time.
And also user can turn off any app at any time.
There is no way to send message to an app which is not running.
Even you can send, there is no way to address each client form the server.
If your app is running, sending message or commanding them to fetch or do anything is just a simple work. The problem is there is no regular way to force them always keep alive. Even under situations like OS reboot or abnormal termination.
However there is an alternative. Just registering app as VOIP app like Skype. OS does not keep the app running too, but will monitor specific socket port, and will wake your app when the socket receives some message. For more details, see here: http://developer.apple.com/library/ios/documentation/iphone/conceptual/iphoneosprogrammingguide/BackgroundExecution/BackgroundExecution.html#//apple_ref/doc/uid/TP40007072-CH5-SW15
In AppStore, an app using VOIP for other purpose like automatic update will not be passed, but you have no need to concern about it.
And other way to send message to device without running app is push notification. This is a feature supported in system-level. But this is not designed to commanding app. This is designed to send textual message. So If your app is not running, the message will be displayed to user. However, you can guide the user to start the app by sending push notification.
As a final option, you can request some feature to Apple for enterprise environment. If your company is big enough to get an enterprise license, Apple will consider your feature request seriously.
If you decided to use VOIP method, I'm sorry I can't help you any more. I have no experience of implementing this kind of app. But it should not so hard.
However hard part is server. It definitely require custom server program which keeps TCP/IP connection. Regular HTTP server cannot be used. Because HTTP itself is designed as not to keep TCP/IP connection. You have to build this kind of server yourself from scratch. You'll have to handle lower level TCP/IP transmissions.
There are a few solutions(both of free/commercial) for this kind of server, but none of are popular because this kind of server regularly needs full customization. So there's nothing to re-use or share.
However I believe this is most suitable implementation for your app.
If you can satisfy automatic update only when the app is running, you can archive it by polling server status from the client periodically.
This is easy to implement because you can use regular HTTP servers for this. Client connect and download recent updates from central server periodically. If there is a new update, just fetch and do what you want. And the app is launched, just check the update at first. Prevent all operation until update applied.
This is regular way. Most of applications are built with this method. In this case, you have no need to implement server or hard thing.
However applying speed of update is depend on polling period.
(Edit)
I couldn't care about private APIs. Because your app is not for AppStore, so you can use private API's freely. (This is different thing with jail-breaking. There are so many hidden features by excluded from documentation) I don't know about private APIs, but it's possible there is some API which enable the support for keep-alive of the app.
However, this reverse engineering work is so painful unless you're born to hack.
You may try to use the following open-source in your project:
http://code.google.com/p/cocoahttpserver/
https://github.com/robin/cocoa-web-resource/wiki
Apple has some sample code on their website that details exactly what you're looking for:
http://developer.apple.com/library/mac/samplecode/CocoaHTTPServer/CocoaHTTPServer.zip
So you have a couple options:
You could distribute your app wirelessly within your organization and push new content out as app updates. Apple provides this option to their Enterprise Developers.
Wireless App Distribution
iPhone enables enterprises to securely host and wirelessly distribute in-house apps to employees over Wi-Fi and 3G. Apps can be updated without requiring users to connect to their computers. In-house apps can be hosted on any web server accessible to users. Users simply tap on a URL to install apps wirelessly without needing to connect to their computers.
The alternative is you configure the app to fetch the updated data. You describe adding an HTTP server to the iOS device, but there's no way the server can receive data when the app isn't running. Given your needs, it would probably work better to embed a web client in your app instead.
If I was in your shoes (and option #1 didn't work), I'd use ASIHTTPRequest to check with a server at launch/daily. If there are new updates, the app could then either prompt the user that there are new data files to download, or it could just silently download them in a background thread.
UPDATED: Perhaps I should have been more explicit about how to do #2. You can configure the download so it isn't interrupted when the user quits the app (you don't need to do a Voip hack). Check out the Completing a Finite Length Task in the Background section in the iOS Programming Guide.
There are http server sample codes from Apple and open source community such as cocoahttpserver TouchHTTPD.
You can upload file to the http server on iphone.
Here's a blog and screen-shots about running cocoahttpserver and upload file to iphone.
The Python CGIHTTPServer allows you to create a server in 0 lines of code:
jcomeau#intrepid:~/rentacoder/bin2txt$ python -m CGIHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
Actually implementing a script to parse the input and save the file would take a little more effort.
[later]
OK, so forget about that, Apple doesn't allow it. See Local server on iPad for the iPad at least.

iPhone: Need suggestion for SYNC contact

i want to create a application which sync my iPhone contacts to my server and vice-versa.
i read a article on google Get Google Sync on your phone . i want to this type of feature which directly update the contact without user interaction (however one time setting is desired).
any body have idea how the google sync work .
Please advice me that how can i achieve this task. any suggestion and link is greatly appreciated
I think it's important to separate the two overlapping approaches in your question.
Firstly, Google Sync is essentially a way to use Microsoft Exchange protocols and to setup a Mail / Contact / Calendar profile on an iPhone. The iPhone OS supports this feature, not an iPhone App in the App Store. Google Sync leverages this fundamental capability of the phone by exposing the data (mail, contacts, calendars) via these known protocols. If you want to expose data in this way to your users, setup a Microsoft Exchange server and ask questions on serverfault.
Secondly, there are iPhone apps. iPhone apps sold in the app store are not currently allowed to run in the background. This means you can't emulate functionality like iTunes or Mail where your music plays while you are browsing the web, or mail checking is done while you are playing a game of Mini Squadron. If you want this backgrounding capability, file a bug/enhancement with Apple.. However, you can interact with iPhone contacts (Address Book) via the API.. You can also of course "re-invent the wheel" and expose the data however you like via the internet, and consume that data from a custom iPhone App with the one caveat that users would need to actively launch your application to get to this data and it would not be integrated with the built-in iPhone Calendar, Address Book or Mail applications. Some good examples of that are some of the music community apps that have messaging systems built into them. Presumably that is all being done with web services.
EDIT: It is also worth mentioning that should you go the "iPhone App" route, you should at least consider if push notifications are right for you, and if so how you will handle it.
Have you seen the API-Docs?
http://developer.apple.com/iphone/library/documentation/ContactData/Conceptual/AddressBookProgrammingGuideforiPhone/100-Introduction/Introduction.html
Next there is an application I use called Funambol - it is a sync4j Server/Client. They have an open source application to sync contacts on the iPhone. Source is somewhere in their repository, informations here: http://forge.ow2.org/scm/?group_id=96
As slf told you your application must run in foreground. This may limit you.
Good luck & best regards,
Florian
The 3.0 SDK will allow your application to read contact data on the phone.
Web services will allow you to publish that data to your server, and receive updates.
You may also want to use coredata to store a hash of all contact data so you can tell what is new / updated and just send that data to your server.