+ Start a Discussion
Mina Zaklama 9Mina Zaklama 9 

Native/Hybrid App: Navigate from a native page to a VF page passing values

Is it possible to create a native mobile app that can open a VF page in its view passing some values to it. Then navigating back to the native page.
Like if I have an iOS app that view a list of All Contacts, but I want the Contact details page to be a VF page because I might be showing and hiding fields frequently and I don't want to issue an update for the app every time I change the fields being viewed in the details page.
I want to pass the Contact.Id to the VF page to view the details and maybe edit then I can navigate back to the native page viewing the list of contacts, and maybe passing values from the VF page to another native page.

Hi Mina, 

That is possible using a Visualforce Component, See the links below for complete documentation, 





There are multiple ways to solve this.
1) Using Native SDK: You can use frontDoorUrlWithReturnUrl method on SFAuthenticationManager, to obtain a salesforce URL with a valid user session. You can then launch a UIWebView with that URL to navigate to appropriate resource. In this case, you will have to define your own techniques to communicate back to native app from your VF page, which is not really straight forward depending on type of communication.

2) Using Hybrid SDK: Hybrid SDK comes packaged with cordova, which provides better hooks to communicate between your native app and the UIWebViews
Mina Zaklama 9Mina Zaklama 9

trying this code redirected me to salesforce login page
"You have attempted to access a page the requires salesforce.com login. If you are already a user of the system, please login below."

NSURL *url = [SFAuthenticationManager frontDoorUrlWithReturnUrl:@"{COMMUNITIES_URL}/apex/{VF_PAGE_NAME}" returnUrlIsEncoded:NO];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url  cachePolicy: NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
[webview loadRequest:request];

Hi Mina, 


Creates an absolute URL to frontdoor with the given destination URL.

+ (NSURL *)frontDoorUrlWithReturnUrl:(NSString *)returnUrl returnUrlIsEncoded:(BOOL)isEncoded
The destination URL to hit after going through frontdoor.

Whether or not the returnUrl value is URL-encoded.

Return Value
An NSURL object representing the configured frontdoor URL.

Declared In


But it would basically look like this:

SFOAuthCredentials *creds = [SFAccountManager sharedInstance].credentials;
NSString *frontDoorUrl = [NSString stringWithFormat:@"%@/secur/frontdoor.jsp?sid=%@&retURL=%@&display=touch", [creds.instanceUrl absoluteString], creds.accessToken, @"/your/page/relative/url"];
UIWebView *webView = [[UIWebView alloc] initWithFrame:view frame];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:frontDoorUrl]]];