Identifying Private APIs in my application - iphone

I have read that one could use the class dump command line tool to identify private APIs in a project/application. I went through several tutorials but it was not useful to identify the private APIs i have used in my application.
So could someone please help me, by giving me step by step instructions as how to identify private APIs using class dump.
If there is any better, easier way of identifying private APIs, please share it with me.

The only way that you're going to have a private API in your own project is if you put it there yourself (or use some open source code that you didn't realize implemented private APIs). That said, people have ran into private-api related app approval issues even when not really using private apis.
One way to check your application for private API's is by using App Scanner.
http://www.chimpstudios.com/appscanner/
I haven't used it myself but I've had it recommended by colleagues.

Related

Access to private Github project board

Is it possible to give read-only access to private Github project boards? Not to the code projects, just to the boards? The code is for developers but other people in the company should be able to see the status of various projects.
Also, is such access free? I'm setting this up for a small startup and funds are still tight. I don't want to make it expensive for them to get help from friends and family.
You can give access to read or write access to repositories, but it does not provide access like this, but you can look for permission information on this link.
https://help.github.com/articles/permission-levels-for-an-organization/
You can review the article at https://code.tutsplus.com/articles/team-collaboration-with-github--net-29876
We have used waffle in past and it works for providing status only. You can use Waffle for providing the status on different issues https://waffle.io without giving access.

Get list Internet Access Point programmatically on iOS

How to get list Internet Access Point programmatically on iOS?
Are there any public or private API's to do this?
This info was applicable to iOS 7 and most likely not applicable to newer iOS versions.
I think it make sense to disassemble and look in two places:
a) CoreTelephony framework.
It has API's like:
CTServerConnectionGetAttachAPNSetttings
Also it has a key for some function kCTDeviceManagementAPNList. I am not sure where should it be passed, but it looks like it's used to retreive a list of APN's
b) ManagedConfiguration framework
You can set APN through using configuration profile. So, you probably can find in there API's which are used to store/retreive them.
As AlexWien correctly pointed out. Both of these things are private API's. I am not aware of public API's which can get APN's info.

Generating Dynamically OpenTok Session ID from iOS

I am using OpenTokSDK for iPhone (using it Natively)
I have made the code for calling but just there is one problem.:-
I have to statically Add the SessionID. But i want to generate the ID Dynamically.
How can I do this ?
Please help!
Thanks In Advance
Full disclosure: I am a developer for TokBox.
The only safe way to get session ID and token credentials to the device is by developing an application server that suits the specific needs of your app. We have a number of server-side SDKs available on GitHub (link) that will interface with the OpenTok server API to generate this data.
Note well the server-side SDK is enough to get your credentials generated, but not all devices will be on the same session, so things like user management and application workflows are all considerations that cannot be easily written to an open source library.
That said, we did try to make some of these examples more clear by writing code examples on our blog (link). You can relieve much of the overhead of writing your own application server (no doubt a daunting task, especially the first time around) by leveraging one of the third party signaling services available, like Parse and Pusher, to name two.
Wobbals is correct, and In addition to what Wabbals has mentioned, generating sessions/tokens is very simple, the sample code required for each server language (PHP, NodeJS, C#, Ruby) is located in OpenTok's Github page.
Furthermore, if you choose not to have server side code and use Parse to handle your back-end, there is a wonderful writeup about how to use Parse's cloud code module for OpenTok to generate sessions and tokens.
Good Luck!
I strongly felt that the tokbox tutorial was quite basic but had steeper learning curve. So I ended up wrote out my own app-cum-tutorial.
Though late, I felt compelled to post here:
How To write your first iPhone Video Chat App using parse and opentok(tokbox)

Using BWToolkit Framework APIs

I received some helpful info from NSGod that informed me that using BWToolkit would possibly be rejected from Apple for using private APIs. The only object I used from BWToolkit was the BWSplitView (I needed the ability to toggleCollapse - like iTunes' Ping Sidebar - slides in and out). If anyone has any info on this possibly not working for the app store, or an alternative, it would be greatly appreciated!
You can find a fairly detailed discussion of this subject here: http://bwalkin.lighthouseapp.com/projects/36323-bwtoolkit/tickets/72
The gist is "It doesn't matter what you use in IB as long as you use the unchanged framework you will get rejected.", but removing the BWTokenField code from the framework is enough to get approval.
ByteProject has released a new version of the BWtoolkit without any private api.
They removed BWTokenField, which uses NSTokenAttachmentCell and this is private API3
more info here : http://byteproject.net/

UIApplication.SharedApplication.TerminateWithSuccess is not there

Why isn't the TerminateWithSuccess method of the SharedApplication implemented in MonoTouch? How can I invoke it? or even better, how can I programmatically close the application?
terminateWithSuccess is private API, which is why MonoTouch does not surface it. You should still be able to call it by using a Selector.
Selector s = new Selector("terminateWithSuccess");
UIApplication.SharedApplication.PerformSelector(s, UIApplication.SharedApplication, 0)
FWIW- I received this last week- Looks like the time is UP for this method...
Thank you for submitting your update to xxxx to the App Store. During our review of your application we found it is using private APIs, which is in violation of the iPhone Developer Program License Agreement section 3.3.1; "3.3.1 Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs." While your application has not been rejected, it would be appropriate to resolve this issue in your next update.
The following non-public APIs are included in your application:
terminateWithSuccess
If you have defined methods in your source code with the same names as the above mentioned APIs, we suggest altering your method names so that they no longer collide with Apple's private APIs to avoid your application being flagged with future submissions.
Please resolve this issue in your next update to xxx.
After posting the question i figured it out, but Matt beat me to it. Here's another way:
UIApplication.SharedApplication.PerformSelector(new Selector("terminateWithSuccess"), null, 0f);