V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
elepone
V2EX  ›  iDev

问个关于推送的问题?

  •  
  •   elepone · 2012-07-30 21:33:10 +08:00 · 4558 次点击
    这是一个创建于 4286 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我在测试机上测试一切正常,通过测试证书也能正确的把推送的消息发到测试手机上。但是上线后却发现了一个尴尬的问题,就是推送的数据库里没有任何数据。软件安装的时候也没有提示有推送服务,询问是否打开这一项。在手机的“设置-->通知”里面查找。无论是“在通知中心”和“不在通知中心”都没有找到我的应用。
    请教一下大家,这是怎么会事?

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
    ...
    [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound ];

    return YES;
    }

    -(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
    {

    NSString *token = [NSString stringWithFormat:@"%@",deviceToken];

    UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];


    int alertStatus = 0;
    int badgeStatus = 0;


    if (types & UIRemoteNotificationTypeAlert) {
    alertStatus = 1;
    }

    if (types & UIRemoteNotificationTypeBadge) {
    badgeStatus = 1;
    }


    if (types == UIRemoteNotificationTypeNone)
    {
    NSLog(@"我已经关闭了推送通知");
    }else {
    //写入数据库
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString: pushUrl]];

    [request addPostValue:token forKey:@"device_token"];
    [request addPostValue:[NSNumber numberWithInt:alertStatus] forKey:@"alert"];
    [request addPostValue:[NSNumber numberWithInt:badgeStatus] forKey:@"badge"];

    [request startAsynchronous];
    }



    token = nil;

    }
    3 条回复    1970-01-01 08:00:00 +08:00
    cool8jay
        1
    cool8jay  
       2012-08-02 19:28:51 +08:00
    服务端上的push有2种模式,一个用于开发,一个用于产品。
    只有以下两种组合时,push才能正常工作:
    1)本地测试客户端+开发模式的服务器
    2)app store的上架客户端+产品模式的服务器
    所以,检查一下咯。
    changx
        2
    changx  
       2012-08-02 23:33:40 +08:00
    distribution provision file 里没有 enable push notification ?
    elepone
        3
    elepone  
    OP
       2012-08-03 11:29:55 +08:00
    谢谢 @cool8jay 和@changx 以上两项都知道,而且也都注意了。唯一可能的是,增加了新的Provision file 以后,总的证书没有重新下载和更新。导致里面没有签名吧。
    再发布个版本看看。
    另,测试了AD Hoc模式也没有问题。 如果没有 enable push notification ,测试的时候是不可能成功的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3784 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 10:31 · PVG 18:31 · LAX 03:31 · JFK 06:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.