Pour y parvenir, nous devons ajouter quelques lignes de code dans les deux applications
Application A: que vous souhaitez ouvrir à partir d'une autre application. (La source)
App B : à partir de l'application B, vous souhaitez ouvrir l' application A (destination)
Code pour l' application A
Ajoutez quelques balises dans le Plist de l' application A
Open Plist Source de l'application A et Past sous XML
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>com.TestApp</string>
<key>CFBundleURLSchemes</key>
<array>
<string>testApp.linking</string>
</array>
</dict>
</array>
Dans l'application déléguée de l' application A - Obtenez un rappel ici
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
// You we get the call back here when App B will try to Open
// sourceApplication will have the bundle ID of the App B
// [url query] will provide you the whole URL
// [url query] with the help of this you can also pass the value from App B and get that value here
}
Arrive maintenant au code de l' application B -
Si vous souhaitez simplement ouvrir l'application A sans aucun paramètre d'entrée
-(IBAction)openApp_A:(id)sender{
if(![[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"testApp.linking://?"]]){
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"App is not available!" message:nil delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[alert show];
}
}
Si vous souhaitez passer le paramètre de l' application B à l' application A, utilisez le code ci-dessous
-(IBAction)openApp_A:(id)sender{
if(![[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"testApp.linking://?userName=abe®istered=1&Password=123abc"]]){
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"App is not available!" message:nil delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[alert show];
}
}
Remarque: vous pouvez également ouvrir l'application en tapant simplement testApp.linking: //? sur le navigateur safari