iOS 啟動程序的4種途徑,以及友盟推送在前台不進行推送,以及當前程序的狀態


怎樣判斷iOS App是通過哪種途徑啟動的?

 
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

說明:當應用程序啟動時執行,應用程序啟動入口。只在應用程序啟動時執行一次。application參數用來獲取應用程序的狀態、變量等,值得注意的是字典參數:(NSDictionary *)launchOptions,該參數存儲程序啟動的原因。

1.若用戶直接啟動,lauchOptions內無數據;
2.若由其他應用程序通過openURL:啟動,則UIApplicationLaunchOptionsURLKey對應的對象為啟動URL(NSURL),UIApplicationLaunchOptionsSourceApplicationKey對應啟動的源應用程序的bundle ID (NSString);

3.若由本地通知啟動,則UIApplicationLaunchOptionsLocalNotificationKey對應的是為啟動應用程序的的本地通知對象(UILocalNotification);

4.若由遠程通知啟動,則UIApplicationLaunchOptionsRemoteNotificationKey對應的是啟動應用程序的的遠程通知信息userInfo(NSDictionary);

其他key還有UIApplicationLaunchOptionsAnnotationKey,UIApplicationLaunchOptionsLocationKey,
UIApplicationLaunchOptionsNewsstandDownloadsKey。 如果要在啟動時,做出一些區分,那就需要在下面的代碼做處理。 比如:應用可以被某個其它應用調起(作為該應用的子應用),要實現單點登錄,那就需要在啟動代碼的地方做出合理的驗證,並跳過登錄。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSURL *url = [options objectForKey:UIApplicationLaunchOptionsURLKey];
if(url)
{
}
NSString *bundleId = [options objectForKey:UIApplicationLaunchOptionsSourceApplicationKey];
if(bundleId)
{
}
UILocalNotification * localNotify = [options objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
if(localNotify)
{
}
NSDictionary * userInfo = [options objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if(userInfo)
{
}
}

根據當前程序的狀態,判斷當前程序是否進行推送(前台不推送,后台推送)

 

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{

    [UMessage didReceiveRemoteNotification:userInfo];

    //定制自定的的彈出框

    if([UIApplication sharedApplication].applicationState == UIApplicationStateActive)    {//程序處於激活狀態,不允許推送

        [UMessage setAutoAlert:NO];//關閉提示框

    }else{ //允許推送

        [UMessage didReceiveRemoteNotification:userInfo];

        //發送通知

        NSNotificationCenter *center = [NSNotificationCenter defaultCenter];

        //發送遠程通知

        [center postNotificationName:@"CYREMOTENOTICATION" object:nil userInfo:userInfo];

    }

}

 
         


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM