美文网首页
【iOS】app启动入口

【iOS】app启动入口

作者: 24c41111e47b | 来源:发表于2016-07-19 11:37 被阅读966次
  • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    说明:当应用程序启动时执行,应用程序启动入口。只在应用程序启动时执行一次。application参数用来获取应用程序的状态、变量等,值得注意的是字典参数:(NSDictionary *)launchOptions,该参数存储程序启动的原因。
启动原因
  • 用户直接启动
    lauchOptions内无数据
  • 其他应用程序通过openURL:启动
    lauchOptions字典内存储:
    @{UIApplicationLaunchOptionsURLKey:启动URL(NSURL),
    UIApplicationLaunchOptionsSourceApplicationKey:启动源程序的bundleID(NSString)}
  • 本地通知启动
    lauchOptions字典内存储:
    @{UIApplicationLaunchOptionsLocalNotificationKey:启动应用程序的本地通知对象(UILocalNotification)}
  • 远程通知启动
    @{UIApplicationLaunchOptionsRemoteNotificationKey:启动应用程序的的远程通知信息userInfo(NSDictionary)}
  • 其他的key还有
    UIApplicationLaunchOptionsAnnotationKey,
    UIApplicationLaunchOptionsLocationKey,
    UIApplicationLaunchOptionsNewsstandDownloadsKey
应用方法

支付宝外部应用跳转处理
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary )launchOptions {
/

如:跳转支付宝app支付时,app被kill,支付完成后,从支付宝app跳转回app(即重新启动),
return NO 不调用application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options,
直接返回首页
*/
if (launchOptions) {
NSString *appIDF = [launchOptions objectForKey:UIApplicationLaunchOptionsSourceApplicationKey];
if (appIDF && [appIDF isEqualToString:@"com.alipay.iphoneclient"]) {
return NO;
//return YES;//需要处理返回的URL返回YES
}
return YES;
}
当程序入口函数返回YES时调用下面方法:

-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options {

NSString *urlStr = [urlabsoluteString];
// 支付宝app进app
if(sourceApplication && [sourceApplication isEqualToString:@"com.alipay.iphoneclient"]){
    [[AlipaySDK defaultService] processOrderWithPaymentResult:urlstandbyCallback:^(NSDictionary *resultDic) {
        NSDictionary *dict = @{ALIPayDidCompleteURLKey:urlStr};
        [[NSNotificationCenter defaultCenter] postNotificationName:ALIPayFromZFBDidCompleteNotification object:resultDic userInfo:dict];
    }];
}
returnYES;

}

在支付类初始化方法中:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(processAliPayResult:) 
                                        name:ALIPayFromZFBDidCompleteNotification object:nil];

相关文章

网友评论

      本文标题:【iOS】app启动入口

      本文链接:https://www.haomeiwen.com/subject/ybymjttx.html