Need to see if your shared folder is taking up space on your dropbox 👨💻? Find out how to check here.
Forum Discussion
Bob S.15
9 years agoCollaborator | Level 9
migrating from API 1 to 2 - how do I know if I have OAuth 1 tokens?
I am finally getting around to updating my OLD apps from the original Dropbox IOS API to the new one. I'm looking at the migration guide, and the first thing it says is to check my OAuth tokens to se...
Greg-DB
Dropbox Community Moderator
9 years agoYes, that's it.
Bob S.15
9 years agoCollaborator | Level 9
Hey Greg,
I'm trying to compare the behavior of this new API with the old one. But I can't find the documentation for the old Rest API for iOS. I want to know if the old loadFile:intoPath call (which downloads a file) automatically overwrote any existing file on the device, or if it generated an error? It looks like it is automatically overwriting, but I wanted to make sure or find out if there was a setting for whether to overwrite or not. I know that the new call has an argument for that.
Thanks
Bob
- Greg-DB9 years ago
Dropbox Community Moderator
The old iOS Core SDK didn't have good documentation unfortunately. Here are the relevant methods/documentation in the comments though:
/* Loads the file contents at the given root/path and stores the result into destinationPath */ - (void)loadFile:(NSString *)path intoPath:(NSString *)destinationPath; /* This will load a file as it existed at a given rev */ - (void)loadFile:(NSString *)path atRev:(NSString *)rev intoPath:(NSString *)destPath;
There wasn't a parameter for controlling overwriting at the destination.
The actual code is:
// Everything's OK, move temp file over to desired file [fileManager removeItemAtPath:resultFilename error:nil]; BOOL success = [fileManager moveItemAtPath:tempFilename toPath:resultFilename error:&moveError];
So, yes, it seems it overwrote existing files by removing anything at the destination first, and then moving in the downloaded data (which it saved at a temporary location beforehand).
- Bob S.159 years agoCollaborator | Level 9
OK, great.
Also, what should I use as a replacement for this check?
if ([DBSession sharedSession])
This is just at the beginning of the program to make sure Dropbox is there, but not necessarily logged in. The [DropboxClientsManager setupWithAppKey:DROPBOX_APP_KEY] doesn't return any value, so I can't use that.
Thanks
Bob
- Greg-DB9 years ago
Dropbox Community Moderator
The new SDK doesn't have a concept exactly like that. As long as you call setupWithAppKey in application: didFinishLaunchingWithOptions: you should be fine. I'm not sure I understand your use case though. Is there a particular scenario you're concerned about that wouldn't work with that? - Bob S.159 years agoCollaborator | Level 9
It's probably fine then. In the old version I guess there was a chance that the DBSession would fail for some reason?
- Greg-DB9 years ago
Dropbox Community Moderator
Yes, the old SDK worked in a different way, with some other options to set for the session that don't apply to the new SDK. - Bob S.159 years agoCollaborator | Level 9
Hey Greg,
I have everything working now. However, when I try to upload a build to iTunes, it rejects it. I get a bunch of errors like these:
ERROR ITMS-90087: "Unsupported Architectures. The executable for XXXXX.app/Frameworks/ObjectiveDropboxOfficial.framework contains unsupported architectures '[x86_64, i386]'."
ERROR ITMS-90209: "Invalid Segment Alignment. The app binary at 'XXXXX.app/Frameworks/ObjectiveDropboxOfficial.framework/ObjectiveDropboxOfficial' does not have proper segment alignment. Try rebuilding the app with the latest Xcode version."
ERROR ITMS-90125: "The binary is invalid. The encryption info in the LC_ENCRYPTION_INFO load command is either missing or invalid, or the binary is already encrypted. This binary does not seem to have been built with Apple's linker."
WARNING ITMS-90080: "The executable 'Payload/XXXXX.app/Frameworks/ObjectiveDropboxOfficial.framework' is not a Position Independent Executable. Please ensure that your build settings are configured to create PIE executables. For more information refer to Technical Q&A QA1788 - Building a Position Independent Executable in the iOS Developer Library."
Any idea what the problem is? I used the Carthage method of installing the framework.
Thanks
Bob
- Greg-DB9 years ago
Dropbox Community Moderator
Please double check that you followed each step of the installation instructions exactly:
https://github.com/dropbox/dropbox-sdk-obj-c#carthage
If you miss any of them it can cause issues like this. For example, I believe missing the "Input Files" step has caused issues like this before.
There was also a similar issue reported here:
https://github.com/dropbox/dropbox-sdk-obj-c/issues/67 - Bob S.159 years agoCollaborator | Level 9
Yes, I followed the instructions exactly. I tried it a couple of times. What's weird is that earlier today it worked, but now it doesn't. I think something about changing project targets might screw with the behavior.
I also, like that guy in the link, had some success by using Embedded Binaries earlier and then found it switching behaviors on me. I don't know, something seems flaky with that Carthage setup. I am trying the CocoaPods method now.
- Bob S.159 years agoCollaborator | Level 9
The CocoaPods method does not work for me either. I get this, for one thing:
Target 'ObjectiveDropboxOfficial' of project 'Pods' was rejected as an implicit dependency for 'ObjectiveDropboxOfficial.framework' because its architectures 'arm64' didn't contain all required architectures 'armv7 arm64'
Target 'Pods-XXXXXX' of project 'Pods' was rejected as an implicit dependency for 'Pods_XXXXXX'.framework' because its architectures 'arm64' didn't contain all required architectures 'armv7 arm64'
I don't like having to use the workspace file and having this CocoaPods thing screw with my XCode project, so I am going to restore from my TimeMachine backup and go back to trying to get the Carthage method to work.
- Bob S.159 years agoCollaborator | Level 9
Well, I got both of my builds to upload without iTunes complaining -- but there is definitely something weird going on. This morning I ripped out the Dropbox framework and settings, and installed it again via Carthage. My first target worked perfectly, uploaded fine. But the second target wouldn't run -- 'image not found'. I compared every setting for the two targets and they were exactly the same. I 'fixed' the second target by embeddeding the Dropbox framework as a binary -- it ran -- but it still wouldn't upload to iTunes due to those architecture errors.
Then without doing anything but updating the version number, I rebuilt both targets and they both ran, both uploaded too. I'm worried that my XCode project has something corrupted in it, because it is unpredictable, building a working version one minute and then a broken one the next, without me changing anything. Also my XCode hung when I tried to quit.
Anyway Greg thanks for all the help, sorry I bothered you with so many questions about this new API.
Bob
- Greg-DB9 years ago
Dropbox Community Moderator
Thanks for following up. Sorry to hear about these building issues, but I'm glad you were able to get working builds. And no problem about the questions, that's what I'm here for!
(By the way, I highly recommend putting your project in version control and committing before any significant changes, as it can make undoing/recovering in cases like that much easier.)
About Dropbox API Support & Feedback
Find help with the Dropbox API from other developers.
The Dropbox Community team is active from Monday to Friday. We try to respond to you as soon as we can, usually within 2 hours.
If you need more help you can view your support options (expected response time for an email or ticket is 24 hours), or contact us on X, Facebook or Instagram.
For more info on available support options for your Dropbox plan, see this article.
If you found the answer to your question in this Community thread, please 'like' the post to say thanks and to let us know it was useful!