เพื่อให้บรรลุถึงสิ่งนี้เราจำเป็นต้องเพิ่ม Code ในสองแอพ
แอพ A:คุณต้องการเปิดจากแอพอื่น (ที่มา)
แอพ B : จากแอพ B คุณต้องการเปิดแอพ A (ปลายทาง)
รหัสสำหรับแอพ A
เพิ่มแท็กเล็ก ๆ น้อย ๆ ลงใน Plist of App A
Open Plist Source ของ App A และ Past ด้านล่าง XML
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>com.TestApp</string>
<key>CFBundleURLSchemes</key>
<array>
<string>testApp.linking</string>
</array>
</dict>
</array>
ในตัวแทนแอปของA - รับโทรกลับที่นี่
- (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
}
ตอนนี้มาถึงรหัสแอพ B -
หากคุณต้องการเปิดแอพที่ไม่มีพารามิเตอร์อินพุต
-(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];
}
}
หากคุณต้องการส่งพารามิเตอร์จากแอพ Bไปยังแอพ A ให้ใช้รหัสด้านล่าง
-(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];
}
}
หมายเหตุ: คุณสามารถเปิดแอปได้ด้วยการพิมพ์testApp.linking: //? บนเบราว์เซอร์ซาฟารี