the*_*man 29 iphone push-notification iphone-sdk-3.0
我正在向我的iPhone应用程序发送推送通知,我想要执行一组不同的指令,具体取决于应用程序是否已经启动.我是iPhone开发的新手,虽然我怀疑UIApplication或我的项目的AppDelegate类有解决方案,但我还没有找到一个好的答案.有没有简单的方法来检查这个?
小智 76
这是处理应用程序的活动/非活动状态的更合适的方法.
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
// check for the app state
UIApplicationState state = [application applicationState];
if (state == UIApplicationStateActive) {
//the app is in the foreground, so here you do your stuff since the OS does not do it for you
//navigate the "aps" dictionary looking for "loc-args" and "loc-key", for example, or your personal payload)
}
application.applicationIconBadgeNumber = 0;
}
Run Code Online (Sandbox Code Playgroud)
didReceiveRemoteNotification:在应用程序运行时调用,是的,但是当它被暂停时,iOS负责放置徽章等.如果应用程序在前台,操作系统什么都不做,只需调用你的didReceiveRemoteNotification:.
小智 26
根据"发布"的含义,您要么寻找:
使用在应用程序变为活动时设置为true的标志,并在应用程序未处于活动状态时设置为false.
标记(在头文件[.h]中):
BOOL applicationIsActive;
Run Code Online (Sandbox Code Playgroud)
代码(在实现文件[.m]中):
- (void)applicationDidBecomeActive:(UIApplication *)application {
applicationIsActive = YES;
}
- (void)applicationWillResignActive:(UIApplication *)application {
applicationIsActive = NO;
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
if (applicationIsActive) {
// Handle notification in app active state here
}
else {
// Handle notification in app suspended state here
}
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为当应用程序暂停时,操作系统在"唤醒"过程中调用"applicationDidBecomeActive"之前调用"applicationDidReceiveRemoteNotification".
"完整"答案实际上是凯文的回答加上这个答案.
希望这可以帮助.
Kev*_*vin 18
UIApplication委托有方法
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
Run Code Online (Sandbox Code Playgroud)
你需要实现的.这会在应用程序运行时收到通知.
如果您的应用当前未运行且收到通知,则可以启动您的应用
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
Run Code Online (Sandbox Code Playgroud)
使用launchOptions字典中保存的通知详细信息.如果字典为零,则用户正常点击应用程序图标.
如果要检查iOS上的applicationState是否小于4,则需要检查是否支持applicationState:
if ([application respondsToSelector:@selector(applicationState)] ){
// Safe to check applicationState
UIApplicationState state = [application applicationState];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20078 次 |
| 最近记录: |