【问题标题】:How to get device tokens如何获取设备令牌
【发布时间】:2012-12-15 15:46:28
【问题描述】:

我有一个适用于 iOS 的应用,我想在那里集成推送通知。我见过tutorial on youtube,一切正常,但最近我正在使用开发证书(用于测试 - 不用于 AppStore),并且我的服务器上有 PHP 脚本。在这个文件中存储了我的 iPhone 的 deviceToken,它是用 php 变量 $deviceToken 编写的。但是现在,当我想在 AppStore 中使用它时,如何从所有下载我的应用程序的人那里获取设备令牌并将其放入 PHP 脚本中?

这是我的 PHP 文件:

 if($_POST['message']){

        $deviceToken = '(my device token)';

        $message = stripslashes($_POST['message']);

        $payload = '{
                        "aps" : 

                            { "alert" : "'.$message.'",
                              "badge" : 1,
                              "sound" : "bingbong.aiff"
                            } 
                    }';

        $ctx = stream_context_create();
        stream_context_set_option($ctx, 'ssl', 'local_cert', 'cert.pem');
        stream_context_set_option($ctx, 'ssl', 'passphrase', 'password');
        $fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
        if(!$fp){
            print "Failed to connect $err $errstrn";
            return;
        } else {
            print "DONE!";
        }

        $devArray = array();
        $devArray[] = $deviceToken;

        foreach($devArray as $deviceToken){
            $msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack        ("n",strlen($payload)) . $payload;
            fwrite($fp, $msg);
        }
        fclose($fp);
    }

<form action="send-notification.php" method="post">
    <input type="text" name="message" maxlength="100">
    <input type="submit" value="SEND">
</form>
</body>

这就是我在 xCode (AppDelegate.m) 中所拥有的

   - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];

    return YES;
}

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
    NSString *deviceTokenString = [NSString stringWithFormat:@"%@", deviceToken];
    NSLog(deviceTokenString);
}

【问题讨论】:

    标签: php xcode push-notification apple-push-notifications devicetoken


    【解决方案1】:

    嗯,我不懂PHP,所以不能给你具体的代码,但是我可以解释一下大体原理。

    当您的应用程序启动时,您应该通过调用 registerForRemoteNotificationTypes: 方法注册到 Apple Push Notifications。

    当注册成功并获得设备令牌后,您应该在application:didRegisterForRemoteNotificationsWithDeviceToken:的实现中将其发送到您的服务器。

    您的服务器应该将它存储在某个数据库中。

    发送通知的 PHP 脚本应该从该数据库中获取设备令牌。

    【讨论】:

    • 哦,所以我需要将每个设备令牌存储在数据库中,然后我必须排列它们并发送是吗?您能解释一下如何从 xcode 将 devicetoken 发送到我的服务器吗?非常感谢,史蒂夫
    • @stepik21 从 xcode 发送设备令牌是什么意思?您必须在应用程序中编写代码来联系您的服务器并发送设备令牌。例如,您可以使用设备令牌作为参数向您的服务器发送 HTTP POST 或 HTTP GET 请求。
    • 哦,是的,我是从应用程序开始的...好吧,我会试试的 :-)
    猜你喜欢
    • 2012-10-02
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多