2

アプリに汎用プッシュを使用しようとしています。Androidでは動作しますが、iOSではエラーメッセージが表示されます:有効なaps-environmentがありません

  1. Apple プロビジョニング プロファイルにプッシュ通知のサポートを追加しました
  2. プッシュを有効にした後、プロビジョニング プロファイルを作成してダウンロードしました
  3. 私は<key>aps-environment</key>モバイルプロビジョンを持っています
  4. 携帯電話にモバイル プロビジョニングとアプリをインストールしました
  5. 私はすべてのソリューションをチェックしてテストしました

私のconfig.xml

        <?xml version="1.0" encoding="UTF-8" ?>
    <widget xmlns = "http://www.w3.org/ns/widgets"
        xmlns:gap = "http://phonegap.com/ns/1.0"
        id        = "---.-------.-----"
        versionCode="10" 
        version   = "1.1.0">

    <!-- versionCode is optional and Android only -->

    <name>PhoneGap push Example</name>

    <description>
        An example for phonegap build docs. 
    </description>

   <author href="http://-----------" email="---------------">------</author>
<access origin="*" />

<!--DEVICE FEATURES ACCESS--> 
<feature name="http://api.phonegap.com/1.0/camera"/>
<feature name="http://api.phonegap.com/1.0/file"/>
<feature name="http://api.phonegap.com/1.0/geolocation"/>
<feature name="http://api.phonegap.com/1.0/media"/>
<feature name="http://api.phonegap.com/1.0/network"/>
<feature name="http://api.phonegap.com/1.0/notification"/>

<gap:plugin name="GenericPush" /> <!-- latest release -->
</widget>

私のjs

    <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
    <script type="text/javascript" charset="utf-8" src="jquery_1.5.2.min.js"></script>
    <script type="text/javascript" src="PushNotification.js"></script>

    <script type="text/javascript">
        var pushNotification;         
        function onDeviceReady() {
            $("#app-status-ul").append('<li>deviceready event received</li>');

            pushNotification = window.plugins.pushNotification;
            if (device.platform == 'android' || device.platform == 'Android') {
                pushNotification.register(successHandler, errorHandler, {"senderID":"661780372179","ecb":"onNotificationGCM"});
            } else {
                pushNotification.register(tokenHandler, errorHandler, {"badge":"true","sound":"true","alert":"true","ecb":"onNotificationAPN"});
            }
        }

        // handle APNS notifications for iOS
        function onNotificationAPN(event) {
            if (event.alert) {
                $("#app-status-ul").append('<li>push-notification: ' + event.alert + '</li>');
                navigator.notification.alert(event.alert);
            }

            if (event.sound) {
                var snd = new Media(event.sound);
                snd.play();
            }

            if (event.badge) {
                pushNotification.setApplicationIconBadgeNumber(successHandler, event.badge);
            }
        }

        // handle GCM notifications for Android
        function onNotificationGCM(e) {
            $("#app-status-ul").append('<li>EVENT -> RECEIVED:' + e.event + '</li>');

            switch( e.event )
            {
                case 'registered':
                if ( e.regid.length > 0 )
                {
                    $("#app-status-ul").append('<li>REGISTERED -> REGID:' + e.regid + "</li>");
                    // Your GCM push server needs to know the regID before it can push to this device
                    // here is where you might want to send it the regID for later use.
                    console.log("regID = " + regID);
                }
                break;

                case 'message':
                $("#app-status-ul").append('<li>MESSAGE -> MSG: ' + e.message + '</li>');
                $("#app-status-ul").append('<li>MESSAGE -> MSGCNT: ' + e.msgcnt + '</li>');
                break;

                case 'error':
                $("#app-status-ul").append('<li>ERROR -> MSG:' + e.msg + '</li>');
                break;

                default:
                $("#app-status-ul").append('<li>EVENT -> Unknown, an event was received and we do not know what it is</li>');
                break;
            }
        }

        function tokenHandler (result) {
            $("#app-status-ul").append('<li>token: '+ result +'</li>');
            // Your iOS push server needs to know the token before it can push to this device
            // here is where you might want to send it the token for later use.
        }

        function successHandler (result) {
            $("#app-status-ul").append('<li>success:'+ result +'</li>');
        }

        function errorHandler (error) {
            $("#app-status-ul").append('<li>error:'+ error +'</li>');
        }

        document.addEventListener('deviceready', onDeviceReady, true);

     </script>

    <div id="app-status-div">
        <ul id="app-status-ul">
            <li>Cordova PushNotification Plugin Demo</li>
        </ul>
    </div>
4

2 に答える 2

1

Phonegap Build コミュニティ フォーラムによると、APS 登録を機能させるには、ディストリビューション プロビジョニング証明書を使用する必要があります。

製品証明書に切り替えた後に成功した人もいます。ただし、私は同じ問題を抱えており、製品証明書で動作させることはできません。

于 2013-02-24T23:29:22.360 に答える
0

長い研究と試行錯誤の末。使用する必要があることがわかりました: IOS (アドホック プロビジョニング プロファイル) およびプッシュ サーバー (本番 AP 証明書とキー)

于 2013-07-05T13:05:57.277 に答える