加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

在PHP中使用GCM向iOS发送远程推送通知时InternalServerError的结

发布时间:2020-12-13 14:15:20 所属栏目:PHP教程 来源:网络整理
导读:我尝试在我的应用程序中为iOS实施Google Cloud Messaging(GCM).我尝试了pod GcmExample Xcode Project上提供的代码并编写了一个 PHP脚本,它将通过 PHP cURL发送请求. 我的PHP代码如下: gcmPush( "kU6GAbdQEg0:APA91bGSF42WITzubJ9lwQ2qUqL4ETtZfQEOthazc4tP
我尝试在我的应用程序中为iOS实施Google Cloud Messaging(GCM).我尝试了pod GcmExample Xcode Project上提供的代码并编写了一个 PHP脚本,它将通过 PHP cURL发送请求.

我的PHP代码如下:

gcmPush(
    "kU6GAbdQEg0:APA91bGSF42WITzubJ9lwQ2qUqL4ETtZfQEOthazc4tP1CRhxx8tKSRChwgtFK37-kt7RjG2P_Ncj2bDOONpPVsYkjxCNi3NDhMNWSkJ7pnlR83jdbMJfOKlD1CPXCgAvZjbwpzdeiTa","This is only a test from GCM for iOS.","PHP test"
    );

function gcmPush($GCM_regID,$message,$title) {

    $GOOGLE_API_KEY = "AIzaSyAd8pw7_J8i-FPswnhUMkFCDHtufSCFFTc";
    $url = 'https://android.googleapis.com/gcm/send';

    $fields = array(
        'to' => $GCM_regID,'notification' => array(
            'sound' => 'default','badge' => '1','body' => $message,'title' => $title
        )
    );

    $headers = array(
        'Authorization: key=' . $GOOGLE_API_KEY,'Content-Type: application/json'
    );

    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_POST,true);
    curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
    curl_setopt($ch,CURLOPT_POSTFIELDS,json_encode($fields));

    $result = curl_exec($ch);
    echo "rn";
    if ($result === FALSE) {
        die('Failed: ' . curl_error($ch) . "rn");
    } else {

        echo "Successrn";   
    }

    curl_close($ch);
}

请求成功,但Google GCM服务器的结果包含以下内容:

{"multicast_id":6164898138439370127,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InternalServerError"}]}

Google API密钥有什么问题吗?
我尝试使用此脚本将远程通知发送到GcmExample.xcworkspace并且它有效.
我想知道如何解决这个问题.

如果您在GCM for iOS中遇到此错误消息{“error”:“InternalServerError”},请确保您在Google Developer Console中上传了正确的P12证书.并确保为签名证书正确设置了配置文件,并按如下所示进行以下设置:

>发展:

@{kGGLInstanceIDRegisterAPNSOption:deviceToken,kGGLInstanceIDAPNSServerTypeSandboxOption:@YES};

>生产/分销:

@{kGGLInstanceIDRegisterAPNSOption:deviceToken,kGGLInstanceIDAPNSServerTypeSandboxOption:@NO};

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读