Hi,
On DiveLog (iOS) I've selected some buddys from my address book. Works well. But when I sync (two-way or device->mac) it clears all the names etc. from my buddys either on the phone and on the Mac. When I try to add a buddy on Dive Log Manager (Mac) it does not save them. When I click on the buddy avatar icon Dive Log Manager tells me it can not access my contacts. Any idea what goes wrong here?
My MBP runs the latest OSX Mountain Lion. iPhone 4s runs latest iOS 6.
Cheers,
Marc
Sync clears my buddy list
Re: Sync clears my buddy list
Marc,
This is likely because Dive Log Manager/DT does not have access to your Contacts. When you installed, the OS was supposed to ask if you gave permission, and if you say no then DLM/DLT can not use *any* Contacts. This is a "feature" of the OS.
Here is a link to our FAQ on this issue and how you can turn on access:
http://www.moremobilesoftware.com/FAQ.html#G6
Let us know if this doesn't fix the problem,
Cheers,
Janice
This is likely because Dive Log Manager/DT does not have access to your Contacts. When you installed, the OS was supposed to ask if you gave permission, and if you say no then DLM/DLT can not use *any* Contacts. This is a "feature" of the OS.
Here is a link to our FAQ on this issue and how you can turn on access:
http://www.moremobilesoftware.com/FAQ.html#G6
Let us know if this doesn't fix the problem,
Cheers,
Janice
Re: Sync clears my buddy list
You might be correct as I installed with "evaluation" in mind and therefore don't allow software access my contacts. Thanks for the link, I will try that!
What about leaving the buddylist untouched in case you can't access the OSX contacts? Doesn't DiveLog / DiveLog Manager have at least the names of the buddys already? And if they can't found on the OSX they should remain intact on iOS (DiveLog) anyway. Just thinking what happens if my contact from iOS and OSX are different. I think then the same issue (clearing the buddys not on OSX) would occur. Right?
What about leaving the buddylist untouched in case you can't access the OSX contacts? Doesn't DiveLog / DiveLog Manager have at least the names of the buddys already? And if they can't found on the OSX they should remain intact on iOS (DiveLog) anyway. Just thinking what happens if my contact from iOS and OSX are different. I think then the same issue (clearing the buddys not on OSX) would occur. Right?
Re: Sync clears my buddy list
Problem solved after fixing changing the privacy settings.support wrote:Marc,
This is likely because Dive Log Manager/DT does not have access to your Contacts. When you installed, the OS was supposed to ask if you gave permission, and if you say no then DLM/DLT can not use *any* Contacts. This is a "feature" of the OS.
Here is a link to our FAQ on this issue and how you can turn on access:
http://www.moremobilesoftware.com/FAQ.html#G6
Let us know if this doesn't fix the problem,
Cheers,
Janice
Re: Sync clears my buddy list
Yeah. Seems reasonable to me. But, no can do. And there is no "clearing of the buddies" at all.What about leaving the buddylist untouched in case you can't access the OSX contacts? Doesn't DiveLog / DiveLog Manager have at least the names of the buddys already? And if they can't found on the OSX they should remain intact on iOS (DiveLog) anyway. Just thinking what happens if my contact from iOS and OSX are different. I think then the same issue (clearing the buddys not on OSX) would occur. Right?
Right now, Apple requires applications that use Contacts "in any way shape or form", to have this security setting turned on. And actually, if the setting is turned off like it was for you and the application tries to create it's own empty contact to use, the application will crash. (For those techies out there, this is an ABPerson object)
So DLM/DLDT don't need access to your contacts at all really. They use their own internal contact list which is only in the application and they read directly from the logbook itself. All the Buddy and Shop information is kept in the Logbook directly. The free version doesn't look at the users Contact database at all. The paid version (which add's editing capabilities) only looks at the user's contact database when you click on the "look this person/shop up in my Contacts" button. And both applications will fail/crash if you don't have this security setting turned on.
This is a bug or over sight on Apple's part and apparently it just hasn't bubbled up as important enough yet to fix. But the only way we can get around it would be to re-write our application to not use the "recommended by Apple way" to do Contacts and then re-write it back again later when they fix the problem. And it just doesn't seem worth it to do that.
Hope that helps explain things,
Janice
Re: Sync clears my buddy list
Thanks for the detailed answer - nice one!
The problem with this access-blocks is that not only the buddy list on Dive Log Manager (OSX) gets empty (entries without any information) but right in the same sync also the Dive Log (iOS) buddylist gets empty and therefore one loses all the buddy information for all dives on both devices which is really a mess.
Maybe (not tested yet) the same problem happens if buddies from the iOS are not found on OSX (in case addressbook on OX and iOS are different).
I am not a Apple-Developer/Objective-C but know a couple of other programming languages / API's very well. What I can't understand from your statement is, why your app should fail because some access from OXS (like contacts) is blocked? Isn't there a try-catch-finally statement in Objective-C?
Given the following situation:
1) Add buudy to dive on the iPhone by selecting a iOS Contact.
2) Sync with Dive Log Manager
I think after step 1 Dive Log (iOS) already has a contact ID as well as first-/lastname and maybe a couple of other basic information from the iOS Contact.
When syncing logic like this (sorry, Syntax is C# as I don't know Objective-C but I hope you get the point):
This way the app shoudl not crash or loses information it already have from iOS so at least the iOS buddies don't get lost and ideally the OSX-app can show at least things like first-/lastname in the buddylist.
Please let me know if I am wrong with this - its interesting stuff for me
Cheers,
Marc
The problem with this access-blocks is that not only the buddy list on Dive Log Manager (OSX) gets empty (entries without any information) but right in the same sync also the Dive Log (iOS) buddylist gets empty and therefore one loses all the buddy information for all dives on both devices which is really a mess.
Maybe (not tested yet) the same problem happens if buddies from the iOS are not found on OSX (in case addressbook on OX and iOS are different).
I am not a Apple-Developer/Objective-C but know a couple of other programming languages / API's very well. What I can't understand from your statement is, why your app should fail because some access from OXS (like contacts) is blocked? Isn't there a try-catch-finally statement in Objective-C?
Given the following situation:
1) Add buudy to dive on the iPhone by selecting a iOS Contact.
2) Sync with Dive Log Manager
I think after step 1 Dive Log (iOS) already has a contact ID as well as first-/lastname and maybe a couple of other basic information from the iOS Contact.
When syncing logic like this (sorry, Syntax is C# as I don't know Objective-C but I hope you get the point):
Code: Select all
var accessBlocked = false;
foreach (var dive in diveLog.Dives)
{
foreach (var buddy in dive.Buddys)
{
try
{
var osxPerson = GetABPersonFromOSX() // Use OSX API's :)
// --> Update Dive Log Buddy entry with information from osxPerson
}
catch (AccessDeniedException ex) // Or whatever Exception is thrown by OSX when security blocks addressbook access
{
// Use the basic information we already have from the device (iOS)
var accessBlocked = true;
}
}
}
if (accessBlocked)
{
MessageBox.Show("Access to your contacts is blocked by the operation system! Go to Preferences > Security ....");
}
Please let me know if I am wrong with this - its interesting stuff for me
Cheers,
Marc
Re: Sync clears my buddy list
Well, if you do a "Copy Logbook TO Device" or "Copy Logbook FROM Device", you will not have any issues. But if you do a "Two-Way Sync", then yes, you are absolutely correct that there will be a problem. Frankly, we did not anticipate that people would continue to use the program when it seemed that it was not working properly and so did not think of this. I think we will put something in the program to not allow a Two-Way sync if the Buddies are not not working properly and just put the message up that you included in your pseudo-code under "if (accessBlocked)".The problem with this access-blocks is that not only the buddy list on Dive Log Manager (OSX) gets empty (entries without any information) but right in the same sync also the Dive Log (iOS) buddylist gets empty and therefore one loses all the buddy information for all dives on both devices which is really a mess.
Just FYI, the application has no way of finding out whether or not the access is blocked or not - there is no API for that. And what we're doing is perfectly legal, it's just a bug in Apple's code. Really, we just expected Apple to fix it "any day now" but they have not. I filed a bug with them while at WWDC that will hopefully get some attention now that I have talked to the "right person". But they also said that it may not be fixed for a long time
In the mean time, I'll get a bug fix release out that will prohibit Two-Way sync if the application does not have access to the user's Contacts. Thanks for pointing this out!
Janice
Re: Sync clears my buddy list
Sound's like a first (good) step to me.
Anyway: a crash to desktop for one my application was never an option. In our company this is always treated as a application bug. Even if OS (in your case Windows) does things wrong because for us it means that the application does no proper exception handling and a proper exception handling is a must in our projects. But maybe we take that a little too serious
Anyway: a crash to desktop for one my application was never an option. In our company this is always treated as a application bug. Even if OS (in your case Windows) does things wrong because for us it means that the application does no proper exception handling and a proper exception handling is a must in our projects. But maybe we take that a little too serious
Re: Sync clears my buddy list
I'm being a little too loose with my use of the word "crash". The application clearly keeps running as you've noticed - if it didn't, you wouldn't be able to sync after it "crashed". It's being "caught" in some way in the Apple libraries. The only thing that stops working in our application is the Buddy panel and all the Buddy functionality (like showing in the Dives and in the Trips). So of course you are quite right, if the application really completely crashed, we would do a work around for it as well, no matter who's fault.
Janice
Janice
Re: Sync clears my buddy list
Yes, you're right - the app isn't crashing. I took it a little too far - sorry.
Just in a matter of interest: what contact data does DiveLog store internally if a choose one of my existing iOS contacts as a buddy?
Just in a matter of interest: what contact data does DiveLog store internally if a choose one of my existing iOS contacts as a buddy?